0

我正在尝试构建一个 Windows 批处理脚本,该脚本根据其网关 IP 捕获网络接口的名称,然后重命名该接口。我无法捕获接口名称,它是一个随机字符串。在 Windows 中,我可以通过运行管道 netsh 命令来获取所需的信息:

C:\Users\Administrator>netsh interface ipv4 dump | findstr "nexthop=2.2.2.1"

add route prefix=0.0.0.0/0 interface="Management" nexthop=2.2.2.1 publish=yes

如何解析输出中显示的接口字符串?

我还尝试使用以下命令的组合在 PowerShell 中进行试验,但运气不佳。我将不胜感激任何帮助,或朝着正确的方向轻推。

 get-wmiObject -Query "select NetConnectionID from Win32_NetworkAdapter"
 get-wmiObject -Query "select DefaultIPgateway from Win32_NetworkAdapterConfiguration"

编辑:我已经开始尝试使用 wmic。鉴于 DefaultIPGateway 是 nicConfig 的一部分,而 NetConnectionID 是 nic 的一部分,无论如何我可以让它工作吗?

wmic nic where "DefaultIPgateway=2.2.2.1" get NetConnectionID
4

1 回答 1

1

也许您可以使用 InterfaceIndex 链接这些对象:

get-wmiObject -Query "select InterfaceIndex from Win32_NetworkAdapter"
get-wmiObject -Query "select InterfaceIndex from Win32_NetworkAdapterConfiguration"

InterfaceIndex 数据类型:sint32 访问类型:读/写该路由下一跳的IP地址。此属性中的值与表示路由下一跳的网络接口的 Win32_NetworkAdapter 和 Win32_NetworkAdapterConfiguration 实例中的 InterfaceIndex 属性中的值相同。在路由绑定到使用广播媒体实现的接口的情况下,该字段的值是该接口上的代理 IP 地址。描述来自: http: //msdn.microsoft.com/en-us/library/windows/desktop/aa394162 (v=vs.85).aspx

像这样的东西

$index = get-wmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object { ($_.DefaultIPGateway -eq "2.2.2.1") } | Select-object InterfaceIndex
get-wmiObject -Class Win32_NetworkAdapter | Where-Object { ($_.InterfaceIndex -eq $index.InterfaceIndex) } | Select NetConnectionId
于 2013-07-04T04:34:36.533 回答