Search code examples
powershell

How do I get unique values in my system.array?


How do I get unique values in my array below?

$serverenv = 'computername,env
server1,prod
server1,
server2,prod,
server2,prod' | convertfrom-csv 

$serverenv | where-object { $_.Env -ne $null -and $_.Env -ne "" }

This is the output

computername env 
------------ --- 
server1      prod
server2      prod
server2      prod

This is the desired output

computername env 
------------ --- 
server1      prod
server2      prod

I tried

$serverenv | select Get-Unique
$serverenv | Get-Unique

Solution

  • You can use Sort-Object -Unique:

    $serverenv |
        Where-Object { -not [string]::IsNullOrWhiteSpace($_.env) } |
        Sort-Object computername, env -Unique