Sto usando Powershell per configurare i collegamenti IIS su un server Web e ho un problema con il codice seguente:
$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]
Se ci sono più di 2 IP sul server, va bene: Powershell restituisce un array e posso interrogare la lunghezza dell'array ed estrarre il primo e il secondo indirizzo senza problemi.
Il problema è: se c'è un solo IP, Powershell non restituisce un array di un elemento, restituisce l'indirizzo IP (come una stringa, come "192.168.0.100") - la stringa ha una .length
proprietà, è maggiore di 1, quindi il test viene superato e mi ritrovo con i primi due caratteri nella stringa, invece dei primi due indirizzi IP nella raccolta.
Come posso forzare Powershell a restituire una raccolta di un elemento o, in alternativa, determinare se la "cosa" restituita è un oggetto piuttosto che una raccolta?