Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface 导致“无效类”错误

Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface 导致“无效类”错误

我的一个用于监控网络负载的 Nagios 插件在一台 Windows 2008 R2 服务器上(共 600 台)出现问题。您可以在此处下载该插件:https://github.com/willemdh/check_ms_win_network_load

尝试时发生问题

Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface

其结果是:

Get-WmiObject : Invalid class "Win32_PerfFormattedData_Tcpip_NetworkInterface"
At line:1 char:1
+ Get-WmiObject Win32_PerfFormattedData_Tcpip_NetworkInterface
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidType: (:) [Get-WmiObject], ManagementException
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

当 VMware 中的网卡从“E1000”更换为“VMXNET 3”时,问题就开始出现。由于我怀疑是 WMI 问题,我已尝试以下步骤来尝试解决它:

winmgmt /salvagerepository %windir%\System32\wbem

winmgmt /resetrepository %windir%\System32\wbem

Rename the repository folder located at %windir%\System32\wbem\repository to repository.old

winmgmt /resyncperf

wmiadap /f

wmiadap /r

在上述每个步骤之间,我停止了 WMI 并重新启动了服务器。但没有任何帮助。我还能做什么才能再次查询 Win32_PerfFormattedData_Tcpip_NetworkInterface 类?

答案1

据我所知,Win32_PerfFormattedData_Tcpip_NetworkInterface 类依赖于 PerfLib。您是否检查过此服务器的性能计数器是如何设置的?尝试重新创建性能计数器。

尝试这个:

(get-counter -ListSet 'network adapter').Counter

或者对于 win7 和更早版本:

(get-counter  -ListSet 'network interface').Counter

运行 perfmon 并查找网络适配器的计数器。

相关内容