Saya menggunakan Powershell untuk menyiapkan pengikatan IIS di server web, dan mengalami masalah dengan kode berikut:
$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]
Jika ada 2+ IP di server, baiklah - Powershell mengembalikan array, dan saya dapat menanyakan panjang array dan mengekstrak alamat pertama dan kedua dengan baik.
Masalahnya adalah - jika hanya ada satu IP, Powershell tidak mengembalikan larik satu elemen, Powershell mengembalikan alamat IP (sebagai string, seperti "192.168.0.100") - string memiliki .length
properti, lebih besar dari 1, jadi tes lulus, dan saya berakhir dengan dua karakter pertama dalam string, bukan dua alamat IP pertama dalam kumpulan.
Bagaimana saya bisa memaksa Powershell untuk mengembalikan koleksi satu elemen, atau secara alternatif menentukan apakah "benda" yang dikembalikan adalah objek daripada koleksi?