ฉันใช้ 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 ส่งคืนคอลเล็กชันองค์ประกอบเดียวหรืออีกทางเลือกหนึ่งว่า "สิ่ง" ที่ส่งคืนเป็นวัตถุไม่ใช่คอลเล็กชันหรือไม่