gpt4 book ai didi

powershell - Win32_NetworkAdapter.Index 和 Win32_IP4RouteTable.InterfaceIndex 不匹配

转载 作者:行者123 更新时间:2023-12-03 01:06:42 24 4
gpt4 key购买 nike

我正在编写一个脚本,该脚本将更新 Windows 7 机器上为默认路由传递流量的接口(interface)的 DNS 服务器列表。

我选择了路由表条目

$defaultgw_routes = Get-WMIObject Win32_IP4RouteTable | 
Where-Object {$_.Destination -eq "0.0.0.0"}

并假设使用 Win32_NetworkAdapterConfiguration 获得的接口(interface)列表在 $interfaces变量定义为
$interfaces = Get-WmiObject Win32_NetworkAdapterConfiguration

我希望在 $route.InterfaceIndex -eq $interface.Index 条件下加入这两个列表.但是我注意到索引不匹配。

路由表有以下接口(interface)定义:
C:\Users\user01>route print if 11
===========================================================================
Interface list
....
13...08 00 27 8d 7e 19 ......Intel(R) PRO/1000 MT #2
11...08 00 27 a4 16 ad ......Intel(R) PRO/1000 MT
12...00 00 00 00 00 00 00 e0 Teredo Tunneling Pseudo-Interface
...

然而 $interface list 有
ServiceName      : E1G60
Description : Intel(R) PRO/1000 MT
Index : 7

ServiceName : tunnel
Description : Tunnel adapter Microsoft Teredo
Index : 11

ServiceName : E1G60
Description : Intel(R) PRO/1000 MT #2
Index : 13

这在两个列表中 Intel(R) PRO/1000 MT #2有索引 13,但是 Intel(R) PRO/1000 MT在一个列表中为 11,在另一个列表中为 7。这种“7-11”差异的原因可能是什么?

来自 descriptionInterfaceIndex属性我希望索引应该匹配。

InterfaceIndex

IP address of the next hop of this route. The value in this property is the same as the value in the InterfaceIndex property in the instances of Win32_NetworkAdapter and Win32_NetworkAdapterConfiguration that represent the network interface of the next hop of the route.

最佳答案

以下代码片段显示了使用 -in comparison operator 连接两个列表的可能方法。 .

$filterDest = "Destination = '0.0.0.0'" 
$defaultgw_routes = Get-WMIObject Win32_IP4RouteTable -Filter $filterDest
$filterIPA = "IPEnabled = True"
$interfaces = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter $filterIPA

'### interfaces ###'
$interfaces |
Where-Object {$_.InterfaceIndex -in $defaultgw_routes.Interfaceindex } |
Select-Object [a-z]* -ExcludeProperty PSComputerName, Scope, Path, Options,
ClassPath, Properties, SystemProperties, Qualifiers, Site, Container
'### routes ###'
$defaultgw_routes |
Where-Object {$_.InterfaceIndex -in $interfaces.Interfaceindex } |
Select-Object [a-z]* -ExcludeProperty PSComputerName, Scope, Path, Options,
ClassPath, Properties, SystemProperties, Qualifiers, Site, Container

请注意
  • 管道至 Where-Object替换为适当的 -Filter指定 Where 的参数子句用作过滤器。使用 WMI Query Language (WQL) 的语法, 和
  • 管道至 Select-Object添加只是为了避免重复输出众所周知的属性。
  • 关于powershell - Win32_NetworkAdapter.Index 和 Win32_IP4RouteTable.InterfaceIndex 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47708846/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com