我有一个项目要在服务器列表中添加持久路由,我需要通过Powershell来完成。我们的环境为每个服务器提供2个NIC,一个生产一个备份。为此,我需要获取计算机的备份IP地址,将最后一个八位字节替换为1并在“route add”命令中使用它。 我认为识别备份NIC的唯一方法是识别没有网关的NIC(Prod NIC有一个默认网关,而备份网卡没有)。 因此,我的第一步是识别那个没有网关的网卡的静态IP地址,即默认网关部分是空的,但静态IP和子网掩码就在那里。 到目前为止,我已经尝试了以下但没有运气:
foreach ($jsonmediationinfo as $value1) {
if (array_key_exists('mstatus',$value1)) {
echo $value1['mstatus'];
}
print_r($jsonmediationinfo);
}
错误 - Get-WmiObject:无效查询
Get-WmiObject win32_NetworkAdapterConfiguration -Filter DefaultIPGateway=NULL | Select IPAddress
错误 - Get-WmiObject:无效查询
此外,我尝试了以下代码,逻辑上出现在我的脑海中:
Get-WmiObject win32_NetworkAdapterConfiguration -Filter DefaultIPGateway="" | Select IPAddress
错误 - Get-WmiObject:无效查询
有人可以帮助我,我怎么能实现这个目标?希望我清楚我的疑问。 提前谢谢!
答案 0 :(得分:2)
您尚未指定要使用的PowerShell版本。如果您有幸拥有PowerShell 4.0,您也可以使用Get-NetIPConfiguration
:
Get-NetIPConfiguration | where {$_.IPv4DefaultGateway -eq $null }
答案 1 :(得分:2)
Get-NetIPConfiguration |选择IPv4Address,InterfaceAlias
答案 2 :(得分:1)
$configs=gwmi win32_networkadapterconfiguration | where {$_.ipaddress -ne $null -and $_.defaultipgateway -eq $null}
if ($configs -ne $null) { $yourtargetIP= $configs[0].IPAddress[0] }
# $yourtargetIP will have the IP address to make the gateway from
事实上,如果您的网卡上有多个IPv4地址,$configs[0].IPAddress
将逐个拥有所有这些地址。此外,您可以在单个网络适配器上分配两个不同的IP地址。因此,如果您在组织中找到这样的服务器,则需要对其进行定制,但如果所有网络适配器都具有单个IPv4地址,则可以正常工作。