Arrays 如何访问数组中的标头信息
首先,我是PowerShell的新手,已经用许多不同的语言编写了代码。我的大部分经验都来自java,所以通常我会在这种背景下格式化代码,如果它看起来很疯狂,我向它道歉 我正在尝试制作一个脚本,可以在CSV上运行,将每个对象加载到一个数组中。然后,我想检查每个对象,确保它附带了电子邮件地址、名字和姓氏。我们目前正在手动删除无效条目 下面是我正在使用的代码。我正在尝试导入CSV。我想读取数组中的每个元素并删除不符合条件的条目,然后将其导出到CSV。我不知道数组中的对象是什么样子,如何检查每个对象中的信息是否为空。任何逻辑方面的帮助都很好。CSV有下面列出的标题,但我只关心上面列出的ONCE。谢谢 ' $csv=读取主机“输入csv的文件路径”Arrays 如何访问数组中的标头信息,arrays,powershell,csv,Arrays,Powershell,Csv,首先,我是PowerShell的新手,已经用许多不同的语言编写了代码。我的大部分经验都来自java,所以通常我会在这种背景下格式化代码,如果它看起来很疯狂,我向它道歉 我正在尝试制作一个脚本,可以在CSV上运行,将每个对象加载到一个数组中。然后,我想检查每个对象,确保它附带了电子邮件地址、名字和姓氏。我们目前正在手动删除无效条目 下面是我正在使用的代码。我正在尝试导入CSV。我想读取数组中的每个元素并删除不符合条件的条目,然后将其导出到CSV。我不知道数组中的对象是什么样子,如何检查每个对象中的
`你可以将中间的一位缩短为
?{$.Lastname-和$.Firstname-和$.Email}
…它可能只是我,但我在导出CSV时总是使用-NoTypeInfo
我在发布后更改了我的代码,以使$.Lastname等运行,但我没有得到任何回报,除非我把代码放在第一个if语句中。我尝试了你的解决方案,它比我试图做的要精简得多,但它也给了我一个空白文件。因此,情况似乎不正常。我知道我有很多条目没有电子邮件,或者没有名字和姓氏。我会更改条件来测试这一点-在Where对象中只使用$\ux.Lastname-ne$null开始。假设您得到了输出,那么只需微调您的条件,它们可能没有空值,而是空字符串。尝试[String]::IsNullOrEmpty($\.Lastname)而不是$\.Lastname-ne$null.Ok,![String]::IsNullOrEmpty()
太棒了,为什么我以前从未见过这个?谢谢你,KevinD,我以前遇到过空字符串,以前总是用难看而笨拙的脚本来伪装过去。
$CsvArray = Import-Csv $csv -Header Lastname,Firstname,Department,Phonenumber,Email
foreach ($i in $CsvArray)
{
Write-Host $CsvArray($i)
if(Lastname -eq $NULL) -or (firstname -eq $NULL) -or (Email -eq $NULL)
{
Delete $i from array
}
else
{
$i
}
}
$csvArray | Export-Csv c:\emaillist.txt -force
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
$CsvArray = Import-Csv $csv -Header Lastname,Firstname,Department,Phonenumber,Email |
Where-Object { $_.Lastname -ne $null -and $_.Firstname -ne $null -and $Email -ne $null } |
Export-Csv C:\emaillist.txt -force