Tôi đang sử dụng Powershell để thiết lập các ràng buộc IIS trên một máy chủ web, và gặp vấn đề với đoạn mã sau:Làm cách nào để buộc Powershell trả về mảng khi cuộc gọi chỉ trả về một đối tượng?
$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]
Nếu có 2+ IP trên máy chủ, phạt tiền - Powershell trả về một mảng, và Tôi có thể truy vấn chiều dài mảng và trích xuất các địa chỉ đầu tiên và thứ hai tốt.
Vấn đề là - nếu chỉ có một IP, Powershell không trả về mảng một phần tử, nó trả về địa chỉ IP (như một chuỗi, như "192.168.0.100") - chuỗi có thuộc tính .length
, lớn hơn 1, vì vậy kiểm tra sẽ trôi qua và tôi kết thúc với hai ký tự đầu tiên trong chuỗi, thay vì hai địa chỉ IP đầu tiên trong bộ sưu tập.
Làm thế nào tôi có thể buộc Powershell trả lại một bộ sưu tập một phần tử, hoặc cách khác xác định xem "điều" trả về có phải là một đối tượng thay vì một bộ sưu tập không?
-tay đơn gây phiền nhiễu/khía cạnh bug-ridden Hầu hết PowerShell .. – user2864740