Tôi đang sử dụng Powershell để thiết lập liên kết IIS trên máy chủ web và gặp sự cố với mã sau:
$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ó hơn 2 IP trên máy chủ, tốt thôi - Powershell trả về một mảng và tôi có thể truy vấn độ dài mảng và trích xuất địa chỉ đầu tiên và thứ hai.
Vấn đề là - nếu chỉ có một IP, Powershell không trả về mảng một phần tử, nó sẽ trả về địa chỉ IP (dưới dạng một chuỗi, như "192.168.0.100") - chuỗi có một thuộc .length
tính, nó lớn hơn 1, vì vậy kiểm tra vượt 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 cách nào để tôi có thể buộc Powershell trả về một tập hợp một phần tử hoặc xác định xem "điều" được trả về có phải là một đối tượng hơn là một tập hợp không?