我可以像这样获得网卡计数器实例名称:
Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface
为Name输出类似的内容:
Intel[R] Ethernet Controller X540-AT2
Intel[R] Ethernet Controller X540-AT2 _2
Intel[R] Ethernet Controller X540-AT2 _3
Intel[R] Ethernet Controller X540-AT2 _4
我可以像这样获得(已启用)网卡:
Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2"
为Name输出类似的东西:
Intel(R) Ethernet Controller X540-AT2
Intel(R) Ethernet Controller X540-AT2 #4
但是,任何一个调用都没有返回与另一个直接匹配的属性。
最接近的是win32_networkadapter的名称,它与计数器名称类似,但已被更改为删除非法字符并更改其他字符(* 1),并具有某种实例化继续(* 2)。
(* 1)=只是在测试中,它用圆括号("()")换成方括号(" []"),并为下划线转义哈希值。
(* 2)=在具有四个网络适配器的计算机中
我的问题是:如何直接将一个映射到另一个,而不依赖于我的猜测文本替换?
修改
如果您尝试在VM上测试此功能,则需要添加至少两个网卡。
以下是在Hyper-V上运行的Windows Server 2012 R2 VM的相关输出:
Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name
Name
----
Microsoft Hyper-V Network Adapter
Microsoft Hyper-V Network Adapter _2
Microsoft Hyper-V Network Adapter _3
Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" | select Name
Name
----
Microsoft Hyper-V Network Adapter #2
Microsoft Hyper-V Network Adapter
Microsoft Hyper-V Network Adapter #3
再次修改:
字符串替换已经完成,并且不能在使用NIC绑定的服务器上运行。
以下是使用网卡绑定的服务器示例:
Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" | select name
Name
----
Intel(R) 82575EB Gigabit Network Connection
Intel(R) 82575EB Gigabit Network Connection
Intel(R) 82576 Gigabit Dual Port Network Connection
Intel(R) 82576 Gigabit Dual Port Network Connection
TEAM : PublicTeam
TEAM : PrivateTeam
Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name
Name
----
TEAM : PrivateTeam - Intel[R] 82575EB Gigabit Network Connection
TEAM : PublicTeam - Intel[R] 82575EB Gigabit Network Connection _2
TEAM : PrivateTeam - Intel[R] 82576 Gigabit Dual Port Network Connection
TEAM : PublicTeam - Intel[R] 82576 Gigabit Dual Port Network Connection _2
*编辑第三个/第四个:*
另一台机器甚至没有使用上述有些可猜测的命名方案。
这是在Windows Server 2012 R2上:
Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name
Name
----
Intel[R] 82576 Gigabit Dual Port Network Connection
Intel[R] 82576 Gigabit Dual Port Network Connection _2
Intel[R] 82576 Gigabit Dual Port Network Connection _3
Intel[R] 82576 Gigabit Dual Port Network Connection _4
Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" | select Name
Name
----
Intel(R) 82576 Gigabit Dual Port Network Connection
Intel(R) 82576 Gigabit Dual Port Network Connection
Microsoft Network Adapter Multiplexor Driver
Microsoft Network Adapter Multiplexor Driver #2
请注意,在这种情况下,它是实际拥有IP的Microsoft网络适配器。
虽然在这种情况下,适配器性能计数器上的匹配性能计数器实际上有效(在其他情况下界面似乎更可靠)
编辑5:
人们不断发表评论 "它与其他主题类似:Get Link Speed - Win32_PerfRawData_Tcpip_NetworkInterface"
正如上面编辑中已经解释的那样,我举例说明这种文本捏造并不起作用。
答案 0 :(得分:0)
我无法找到该名称以外的关系。
因此,我无法想象所有替换字符,我会使用规范名称:
$cananicalName1 = "Intel(R) Ethernet Controller X540-AT2 #4" -replace '[^A-Za-z0-9]','_'
$cananicalName2 = "Intel[R] Ethernet Controller X540-AT2 _4" -replace '[^A-Za-z0-9]','_'
两者都给出了:
Intel_R__Ethernet_Controller_X540_AT2__4