Я використовую 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 повернути одноелементну колекцію, або альтернативно визначити, чи повертається "річ" є об'єктом, а не колекцією?