有没有人有资源列出由WMI查询语言调用的perfmon类? 我有一些监视软件可以通过WMI获取数据,但是我必须在WMI查询语言(WQL)中input一个查询。 这里是一个例子:
SELECT AvgDiskQueueLength FROM Win32_PerfFormattedData_PerfDisk_logicalDisk WHERE Name =“_ Total”
所以我有一个语法的概念,但我试图找出不同的类,特别是一些MS SQL的。 我试过使用Scriptomatic工具来探索SQL服务器的WMI信息,但没有任何与SQL Server相关的东西。
服务器操作系统是Windows 2003,运行MS SQL Server 2000。
您可以使用PowerShell来列出名称空间中的类。
get-wmiobject -list
将列出默认(“ \root\cmiv2 ”)命名空间中的所有类,则可以使用-namespace参数指定不同的命名空间。
要获得所有性能类,请使用以下任一方法:
get-wmiobject -list | ?{$_.Name -like 'Win32_PerfRaw*'}
对于原始数据,或者:
get-wmiobject -list | ?{$_.Name -like 'Win32_PerfForm*'}
为formmater数据。 Perfmon显示格式化的数据(通过计数器types处理),raw是性能计数器提供程序发送的内容,无需进一步处理。
这是我怎么做的…
现在应该显示该机器上的所有perfmon WMI类。 从那里你可以编辑类,看看每个属性是什么。
MSDN具有最好的WMI类列表,但可能很难追踪到它们。
SQL2005类在这里 。 但是,根据Microsoft的说法,“WMIpipe理提供程序”未预先安装用于SQL Server 2000.需要使用“WMIpipe理提供程序安装程序”以及x86 \ other \ wmi文件夹下的SQL Server 2000安装光盘分别安装。 “ 一旦安装,它似乎使用与SQL2005相同的类。
此链接到Server 2003 WMI参考 。 它包含WMI ODBC适配器函数的SQL,并且应该为您提供您感兴趣的任何非SQL类。
在Richard的Powershell答案上捎带一点,我发现Powershell WMI Explorer是一个很好的工具,可以在WMI结构中浏览。
可能来自“脚本专家”网站:
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colClasses = objWMIService.SubclassesOf() For Each objClass in colClasses For Each objClassQualifier In objClass.Qualifiers_ If LCase(objClassQualifier.Name) = "dynamic" Then WScript.Echo objClass.Path_.Class & ": " & _ objClassQualifier.Name & "=" & _ objClassQualifier.Value End If Next Next
我使用这个脚本来检查或排除特定计算机上可用的类。
Scriptomatic是脚本专家的一个很棒的小工具,可以作为WMI对象浏览器使用,也可以在VB / Perl / Python中输出查询该对象的基本脚本。 这是一个很好的起点。
从这里开始,在MSDN上 。 注意左边的各个类。 点击您需要的更多细节。 在Perfmon中,你会经常发现更多关于如何解释各种类对象的详细描述。