我正在使用 Powershell 在 Web 服务器上设置 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,fine-Powershell 返回一个数组,我可以查询数组长度并提取第一个和第二个地址。
问题是——如果只有一个 IP,Powershell 不会返回一个单元素数组,而是返回 IP 地址(作为一个字符串,比如“192.168.0.100”)——这个字符串有一个 .length
属性,大于1,所以测试通过了,结果是字符串中的前两个字符,而不是集合中的前两个 IP 地址。
如何强制 Powershell 返回一个单元素集合,或者确定返回的“ thing”是一个对象而不是一个集合?