从PowerShell阵列中删除重复值

Eri*_*ver 100 arrays powershell

如何从PowerShell阵列中删除重复项?

$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Run Code Online (Sandbox Code Playgroud)

Kei*_*ill 177

使用Select-Object例如:

$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique
Run Code Online (Sandbox Code Playgroud)

  • 这太简单了:-(.在PowerShell 2中,如果你的数组已经排序,你也可以使用`Get-Unique`(或`gu`). (7认同)
  • Johannes,Get-Unique可用于v1 :) (2认同)
  • 很酷,这很好用,仅需注意,如果您想简明扼要,甚至可以将其缩写为`-u`。select -u我会在命令行上使用它,但是用代码编写,建议使用完整的PS措辞:Select-Object -Unique (2认同)

Sha*_*evy 81

另外一个选项:

$a | sort -unique
Run Code Online (Sandbox Code Playgroud)

  • 这个看起来也快了一点。 (3认同)
  • 这也解决了我的下一个问题,即如何对其进行排序。谢谢! (2认同)
  • 这是更好的答案。select -unique 不考虑区分大小写 (2认同)

Dar*_*te1 18

如果您想完全防弹,这就是我的建议:

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

输出:

Apples
Banana
Run Code Online (Sandbox Code Playgroud)

这首先使用Property参数来Trim()处理字符串,因此会删除多余的空格,然后仅选择-Unique值。

更多信息Sort-Object

Get-Help Sort-Object -ShowWindow
Run Code Online (Sandbox Code Playgroud)


小智 6

$a | sort -unique
Run Code Online (Sandbox Code Playgroud)

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

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

$ServerList
Run Code Online (Sandbox Code Playgroud)


Omz*_*zig 5

这就是您如何从具有两个或多个属性的数组中获得唯一性的方法。排序是至关重要的,也是让它正常工作的关键。否则,您只会退回一件商品。

PowerShell 脚本:

$objects = @(
    [PSCustomObject] @{ Message = "1"; MachineName = "1" }
    [PSCustomObject] @{ Message = "2"; MachineName = "1" }
    [PSCustomObject] @{ Message = "3"; MachineName = "1" }
    [PSCustomObject] @{ Message = "4"; MachineName = "1" }
    [PSCustomObject] @{ Message = "5"; MachineName = "1" }
    [PSCustomObject] @{ Message = "1"; MachineName = "2" }
    [PSCustomObject] @{ Message = "2"; MachineName = "2" }
    [PSCustomObject] @{ Message = "3"; MachineName = "2" }
    [PSCustomObject] @{ Message = "4"; MachineName = "2" }
    [PSCustomObject] @{ Message = "5"; MachineName = "2" }
    [PSCustomObject] @{ Message = "1"; MachineName = "1" }
    [PSCustomObject] @{ Message = "2"; MachineName = "1" }
    [PSCustomObject] @{ Message = "3"; MachineName = "1" }
    [PSCustomObject] @{ Message = "4"; MachineName = "1" }
    [PSCustomObject] @{ Message = "5"; MachineName = "1" }
    [PSCustomObject] @{ Message = "1"; MachineName = "2" }
    [PSCustomObject] @{ Message = "2"; MachineName = "2" }
    [PSCustomObject] @{ Message = "3"; MachineName = "2" }
    [PSCustomObject] @{ Message = "4"; MachineName = "2" }
    [PSCustomObject] @{ Message = "5"; MachineName = "2" }
)

Write-Host "Sorted on both properties with -Unique" -ForegroundColor Yellow
$objects | Sort-Object -Property Message,MachineName -Unique | Out-Host

Write-Host "Sorted on just Message with -Unique" -ForegroundColor Yellow
$objects | Sort-Object -Property Message -Unique | Out-Host

Write-Host "Sorted on just MachineName with -Unique" -ForegroundColor Yellow
$objects | Sort-Object -Property MachineName -Unique | Out-Host
Run Code Online (Sandbox Code Playgroud)

输出:

Sorted on both properties with -Unique

Message MachineName
------- -----------
1       1          
1       2          
2       1          
2       2          
3       1          
3       2          
4       1          
4       2          
5       1          
5       2          


Sorted on just Message with -Unique

Message MachineName
------- -----------
1       1          
2       1          
3       1          
4       1          
5       2          


Sorted on just MachineName with -Unique

Message MachineName
------- -----------
1       1          
3       2  
Run Code Online (Sandbox Code Playgroud)

来源: https : //powershell.org/forums/topic/need-to-unique-based-on-multiple-properties/