Ich verwende Powershell, um IIS-Bindungen auf einem Webserver einzurichten, und habe ein Problem mit dem folgenden Code:
$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]
Wenn auf dem Server mehr als 2 IPs vorhanden sind, ist dies in Ordnung. Powershell gibt ein Array zurück. Ich kann die Länge des Arrays abfragen und die erste und die zweite Adresse in Ordnung extrahieren.
Das Problem ist - wenn es nur eine IP gibt, gibt Powershell kein Ein-Element-Array zurück, sondern die IP-Adresse (als Zeichenfolge wie "192.168.0.100") - die Zeichenfolge hat eine .length
Eigenschaft, die größer als 1 ist Der Test besteht und ich erhalte die ersten beiden Zeichen in der Zeichenfolge anstelle der ersten beiden IP-Adressen in der Sammlung.
Wie kann ich Powershell zwingen, eine Sammlung mit einem Element zurückzugeben, oder alternativ feststellen, ob das zurückgegebene "Ding" eher ein Objekt als eine Sammlung ist?