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에서 단일 요소 컬렉션을 반환하도록 강제하거나 반환 된 "사물"이 컬렉션이 아닌 개체인지 여부를 어떻게 확인할 수 있습니까?