Я использую 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-адреса, fine - Powershell возвращает массив, и я могу запросить длину массива и извлечь только первый и второй адреса.
Проблема - если есть только один IP, Powershell не возвращает одноэлементный массив, он возвращает IP-адрес (как строку, например "192.168.0.100" ) - строка имеет свойство .length
он больше 1, поэтому тест проходит, и я получаю первые два символа в строке, а не первые два IP-адреса в коллекции.
Как я могу заставить Powershell вернуть одноэлементную коллекцию или, наоборот, определить, является ли возвращенная "вещь" объектом, а не коллекцией?