Estou usando o Powershell para configurar ligações do IIS em um servidor web e tendo um problema com o seguinte 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]
Se houver mais de 2 IPs no servidor, tudo bem - o Powershell retorna uma matriz, e eu posso consultar o comprimento da matriz e extrair o primeiro e o segundo endereços.
O problema é - se houver apenas um IP, o Powershell não retornará uma matriz de um elemento, ele retornará o endereço IP (como uma string, como "192.168.0.100") - a string possui uma .length
propriedade, é maior que 1, portanto o teste passa e acabo com os dois primeiros caracteres da sequência, em vez dos dois primeiros endereços IP da coleção.
Como forçar o Powershell a retornar uma coleção de um elemento ou, alternativamente, determinar se a "coisa" retornada é um objeto e não uma coleção?