【发布时间】:2018-10-18 10:50:42
【问题描述】:
PowerShell 脚本在某些服务器上失败。失败的服务器上的 PowerShell 版本是 2。
代码如下:
(Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'True'").IPAddress[0]
在它工作的服务器上,输出是服务器的 IP 地址。举个例子:
10.1.1.1
在失败的服务器上,输出如下:
无法索引到空数组。在行:1 字符:90 + (Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'True'").IPAddress[服务器之间的主要区别是:
- 在哪里工作(根据我的观察);有一个 IP 地址(单个 NIC)。
- 在失败的服务器上,有多个具有不同子网的 NIC(因此一个 IP 将是 10.x.x.x,第二个 IP 将是 172.x.x.x)——我希望脚本从 10.x.x.x 开始获取 IP。
如果我删除.IPAddress[0],这是输出:
脚本:
(Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "ipenabled = 'True'")
工作服务器上的输出:
DHCP启用:假 IP 地址:{10.x.x.x} 默认IPGateway:{10.x.x.x} DNS域: 服务名称:网卡 描述:网卡名称 指数:11脚本失败的服务器上的输出:
DHCP启用:假 IP 地址:{172.x.x.x} 默认IPGateway: DNS域: 服务名称:l2nd 描述:网卡#34 索引 : 13 DHCP启用:假 IP 地址:{10.x.x.x} 默认IPGateway:{10.x.x.x} DNS域: 服务名称:iANSMiniport 描述 : 指数:20【问题讨论】:
-
数组没有
IPAddress属性,并且成员枚举是在PowerShell v3中“发明”的,所以它在v2中不起作用。 -
如何使脚本向后兼容版本 2?
-
Get-WmiObject ... | Select-Object -First 1 -Expand IPAddress -
虽然这确实给出了输出。除非我们正在寻找从“10”开始的 IP 地址,否则它将不起作用。你能帮忙吗?
-
请查阅 PowerShell 教程。按属性值过滤项目几乎是最基本的。
标签: powershell null