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

在我的Nagios插件监视networking负载给我一台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类?

AFAIK Win32_PerfFormattedData_Tcpip_NetworkInterface类依赖于PerfLib。 你有没有检查你的性能计数器是如何设置的这台服务器? 尝试重新创build性能计数器。

尝试这个:

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

或者这对于win7和更早版本:

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

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