从PowerShellarrays中删除重复的值

我如何从PowerShell数组中删除重复项?

$a = @(1,2,3,4,5,5,6,7,8,9,0,0) 

使用Select -uniq例如:

 $a = @(1,2,3,4,5,5,6,7,8,9,0,0) $a = $a | select -uniq 

另外一个select:

 $a | sort -unique 
 $a | sort -unique 

这适用于不区分大小写,因此删除具有不同情况的重复string。 解决了我的问题。

 $ServerList = @( "FS3", "HQ2", "hq2" ) | sort -Unique $ServerList FS3 HQ2 

如果列表已sorting,则可以使用Get-Unique cmdlet:

  $a | Get-Unique 

如果你想充分的炸弹certificate,这是我会build议:

 @('Apples', 'Apples ', 'APPLES', 'Banana') | Sort-Object -Property @{Expression={$_.Trim()}} -Unique 

输出:

 Apples Banana 

这使用Property参数来首先Trim()string,所以多余的空格被删除,然后只select-Unique值。

有关Sort-Object更多信息:

 Get-Help Sort-Object -ShowWindow 

无论您是从Powershell 2.0到5.1使用“SORT -UNIQUE”,“SELECT -UNIQUE”还是“GET-UNIQUE”,所有示例都在单列数组上。 我还没有得到这个在具有多个列的数组上运行来移除重复行以跨所述列留下一行的单个事件,或者开发替代的脚本解决scheme。 相反,这些cmdlet只返回一个数组中发生的单行事件,并抛出所有重复的行。 通常,我必须从Excel的最终CSV输出中手动删除重复项以完成报告,但有时候我想在删除重复项之后继续使用Powershell中的所述数据。