Как я могу заставить Powershell для возврата массива, когда вызов возвращает только один объект?

Я использую Powershell для настройки привязок IIS на веб-сервере, и у меня возникла проблема со следующим кодом:

$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]

Если на сервере более 2 IP-адресов, все в порядке — Powershell возвращает массив, и я могу запросить длину массива и извлеките первый и второй адреса просто отлично.

Проблема в том, что если есть только один IP-адрес, Powershell не возвращает массив из одного элемента, он возвращает IP-адрес (в виде строки, например «192.168.0.100») — строка имеет .length. , оно больше 1, поэтому тест проходит, и я получаю первые два символа в строке вместо первых двух IP-адресов в коллекции.

Как заставить Powershell вернуть коллекцию из одного элемента или, в качестве альтернативы, определить, является ли возвращенная «вещь» объектом, а не коллекцией?

105
задан Dylan Beattie 19 June 2012 в 18:49
поделиться