Estoy usando Powershell para configurar enlaces IIS en un servidor web y tengo un problema con el siguiente código:
$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]
Si hay más de 2 direcciones IP en el servidor, está bien: Powershell devuelve una matriz y puedo consultar la longitud de la matriz y extraer la primera y la segunda direcciones sin problemas.
El problema es que, si solo hay una IP, Powershell no devuelve una matriz de un elemento, devuelve la dirección IP (como una cadena, como "192.168.0.100"), la cadena tiene una .length
propiedad, es mayor que 1, entonces la prueba pasa y termino con los dos primeros caracteres de la cadena, en lugar de las dos primeras direcciones IP de la colección.
¿Cómo puedo forzar a Powershell a que devuelva una colección de un elemento o, alternativamente, determinar si la "cosa" devuelta es un objeto en lugar de una colección?