デフォルトルートのトラフィックを通過させるインターフェイスのWindows 7マシンでDNSサーバーリストを更新するスクリプトを作成しています。Win32_NetworkAdapter.IndexとWin32_IP4RouteTable.InterfaceIndexが一致しません
私は上の2つのリストを結合することが期待
$defaultgw_routes = Get-WMIObject Win32_IP4RouteTable |
Where-Object {$_.Destination -eq "0.0.0.0"}
とルートテーブルのエントリを選択したとWin32_NetworkAdapterConfiguration
を用いて得られたインターフェイスのリストと仮定すると$interfaces
変数に
$interfaces = Get-WmiObject Win32_NetworkAdapterConfiguration
として定義されます条件$route.InterfaceIndex -eq $interface.Index
。しかし、私は指標が一致しないことに気づいた。
ルートテーブルには、次のインターフェイス定義を有する:
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
リストは、インデックス13を有するIntel(R) PRO/1000 MT #2
両方のリストにある
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
一のリスト11であり、そして他のリストの7。この "7-11"の不一致の理由は何でしょうか?
InterfaceIndex
プロパティのdescriptionから、インデックスが一致する必要があります。このルートのネクストホップの
ますInterfaceIndex
IPアドレス。このプロパティの値は、 のWin32_NetworkAdapterのインスタンスと、ルートの次のホップのネットワークインターフェイス を表す Win32_NetworkAdapterConfigurationのInterfaceIndexプロパティの値と同じです。
'$ interfaces | Format-Table InterfaceIndex、Index、ServiceName、IPAddress、Description'は、 'InterfaceIndex'と' Index'の関係を説明する必要があります。 – JosefZ
@JosefZありがとう、それは素晴らしいです。私はそれを完全に逃した。 –