Чтобы найти элементы в одном array
, которые не находятся в другом array
, вы должны использовать Where-Object
командлет и оператор сравнения, например -contains
или -notcontains
.Вот так:
$array1 = @('A','B','C','D','E','F')
$array2 = @('A','B','F')
$array1 | Where-Object {$array2 -notcontains $_ }
C
D
E
Кроме того, в вашем коде переменная $used
всегда будет содержать только один элемент, поскольку вы перезаписываете его значение в каждом цикле foreach.
# ALL used SessionHosts
foreach($p in $RDSessionCollections){
$used = (Get-RDSessionHost -CollectionName $p -ConnectionBroker $ConnectionBrooker).SessionHost
}
Вы бы хотелидля явного создания array variable
и добавления значений используемых хостов в.
# ALL used SessionHosts
$used = @()
foreach($p in $RDSessionCollections){
$used += (Get-RDSessionHost -CollectionName $p -ConnectionBroker $ConnectionBrooker).SessionHost
}
И для фильтрации неиспользуемых SessionHosts вы, вероятно, захотите использовать $RDSessionCollections
$unused = ($RDSessionCollections| Where {$used -NotContains $_})
вместо $RDSessionHost
$unused = ($RDSessionHost | Where {$used -NotContains $_})