【发布时间】:2019-01-05 09:11:26
【问题描述】:
当我在我的contacts.xml 上运行这个解析器脚本时,每个用户显示一行,我得到了相同数据的多个实例。我只想要一个相同数据的条目。如何在数据写入 CSV 之前对其进行重复数据删除?
#https://stackoverflow.com/questions/29999682/powershell-parsing-a-text-file
$input = Get-Content $env:USERPROFILE\Downloads\contacts.xml\Downloads\contacts.xml
$array = @()
$input | % {
$writeobj = $false
$obj = New-Object System.Object
if ($_ -match 'email*') {
$Email = ($_ -split ':')[1]
}
if ($_ -match 'FN*') {
$NAME = ($_ -split ':')[1]
$writeobj = $true
}
if ($writeobj) {
$obj | Add-Member -Type NoteProperty -Name Email -Value $Email
$obj | Add-Member -Type NoteProperty -Name Name -Value $NAME
$array += $obj
}
Write-Host $Name, $email
}
$array | Export-Csv -Path C:\scripts\reports\test.csv -NoTypeInformation
我希望这会产生单个条目,但我得到了重复项(而且它们也没有正确排列)。 (是的,我检查了 XML 文件中的单个条目)
【问题讨论】:
-
$Inputvar 名称是自动 $Var 名称之一...不要永远使用它。 [咧嘴] -
为什么不将内容转换为 [xml] 并检查属性/值?
-
$input是一个automatic variable 并且不应该像那样重新使用。使用不同的变量名。 -
@PatrickBurwell - 那个变量 -
$Input是一个自动变量,除非您需要它的设计用途,否则不应使用它。否则,您会发现您的数据正在做奇怪的事情 ... [grin]
标签: arrays powershell duplicates