Używam PowerShell do utworzenia wiązań IIS na serwerze WWW, a problem z następującego kodu:Jak zmusić Powershell do zwrócenia tablicy, gdy wywołanie zwraca tylko jeden obiekt?
$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 istnieje 2+ IP na serwerze, w porządku - PowerShell zwraca tablicę, a 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 właściwość .length
, jest większy niż 1, więc test przechodzi, a ja kończę na pierwszych dwóch znakach w ciągu, zamiast dwóch pierwszych adresów IP w kolekcji.
W jaki sposób można zmusić Powershell do zwrócenia kolekcji jednego elementu, lub alternatywnie określić, czy zwrócona "rzecz" jest obiektem, a nie zbiorem?
Większość pojedynkę irytujące/bug-jeździł aspekt PowerShell .. – user2864740