Używam programu PowerShell do konfigurowania powiązań usług IIS na serwerze sieci Web i mam problem z następującym kodem:
$serverIps = gwmi Win32_NetworkAdapterConfiguration
| Where { $_.IPAddress }
| Select -Expand IPAddress
| Where { $_ -like '*.*.*.*' }
| Sort
if ($serverIps.length -le 1) {
Write-Host "You need at least 2 IP addresses for this to work!"
exit
}
$primaryIp = $serverIps[0]
$secondaryIp = $serverIps[1]
Jeśli na serwerze jest ponad 2 adresy IP, dobrze - Powershell zwraca tablicę i mogę zapytać o długość tablicy i wyodrębnić pierwszy i drugi adres.
Problem polega na tym, że jeśli istnieje tylko jeden adres IP, Powershell nie zwraca tablicy jednoelementowej, zwraca adres IP (jako ciąg znaków, np. „192.168.0.100”) - ciąg ma .length
właściwość większą niż 1, więc test kończy się pomyślnie i otrzymuję pierwsze dwa znaki w ciągu zamiast pierwszych dwóch adresów IP w kolekcji.
Jak mogę zmusić program Powershell do zwrócenia jednoelementowej kolekcji lub alternatywnie określić, czy zwracana „rzecz” jest obiektem, a nie kolekcją?