Как мне получить уникальные значения в моем массиве ниже?
$serverenv = 'computername,env
server1,prod
server1,
server2,prod,
server2,prod' | convertfrom-csv
$serverenv | where-object { $_.Env -ne $null -and $_.Env -ne "" }
Это результат
computername env
------------ ---
server1 prod
server2 prod
server2 prod
Это желаемый результат
computername env
------------ ---
server1 prod
server2 prod
Я пытался
$serverenv | select Get-Unique
$serverenv | Get-Unique
🤔 А знаете ли вы, что...
PowerShell предоставляет доступ к средствам шифрования для обеспечения безопасности данных.
Вы можете использовать Sort-Object -Unique
:
$serverenv |
Where-Object { -not [string]::IsNullOrWhiteSpace($_.env) } |
Sort-Object computername, env -Unique
Вам следует сгруппировать все элементы по одному и тому же имени свойства. Затем для каждой одноименной группы выбрать только один объект, используя...
$serverenv | Group-Object -Property 'ComputerName' | ForEach-Object {
$_.Group | Select-Object -First 1
}
Если вам нужно пропускать значения с пустым «env», вы можете добавить эту логику внутри блока сценария foreach.
Например, отфильтруйте все объекты с пустым свойством env. (Где свойство объекта env не равно нулю)
$serverenv | Group-Object -Property 'ComputerName' | ForEach-Object {
$_.Group | Where-Object -Property 'env' -ne $null | Select-Object -First 1
}