6 powershell wmi performancecounter
我可以像这样获得网卡计数器实例名称:
Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface
Run Code Online (Sandbox Code Playgroud)
对于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
Run Code Online (Sandbox Code Playgroud)
我可以得到(启用)网卡这样:
Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2"
Run Code Online (Sandbox Code Playgroud)
为姓名输出这样的东西:
Intel(R) Ethernet Controller X540-AT2
Intel(R) Ethernet Controller X540-AT2 #4
Run Code Online (Sandbox Code Playgroud)
但是,任何一个调用都没有返回与另一个直接匹配的属性.
最接近的是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
Run Code Online (Sandbox Code Playgroud)
再次编辑:
字符串替换是正确的,只是在使用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
Run Code Online (Sandbox Code Playgroud)
*编辑第三/第四名:*
另一台机器甚至没有使用上面有些可猜测的命名方案.
这是在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
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,它是实际具有IP的Microsoft网络适配器.
虽然在这种情况下,适配器 perf 计数器上的匹配性能计数器实际上工作(在其他情况下接口似乎更可靠)
编辑5:
人们不断发表评论,如"它与其他线程类似:获取链接速度 - Win32_PerfRawData_Tcpip_NetworkInterface "
正如上面编辑中已经解释的那样,我举例说明了这种文本捏造不起作用.
除了这个名字之外,我找不到其他关系。
因此,由于我无法想象所有替换角色,我存储了一个规范名称:
$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]','_'
Run Code Online (Sandbox Code Playgroud)
两者都给出:
Intel_R__Ethernet_Controller_X540_AT2__4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1103 次 |
最近记录: |