- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 WMI 提供程序,我已经设法检索了有关计算机系统和硬件类 的所有信息,但无法从 中获取我想要的数据>性能计数器类。 ( Win32 Classes )
通过查阅 MSDN 文档并使用他们提供的示例,我想出了一个 shell 脚本,它应该返回 Win32_PerfFormattedData 抽象基类的所有属性。
脚本:
$osClass = New-Object System.Management.ManagementClass Win32_PerfFormattedData
$osClass.Options.UseAmendedQualifiers = $true
# Get the Properties in the class
$properties = $osClass.Properties
"This class has {0} properties as follows:" -f $properties.count
# display the Property name, description, type, qualifiers and instance values
foreach ($property in $properties) {
"Property Name: {0}" -f $property.Name
"Description: {0}" -f $($property.Qualifiers["Description"].Value)
"Type: {0}" -f $property.Type
"-------"
}
(引用自 here)
问题是我只从它的基类 Win32_Perf 中检索属性
编辑
经过更多研究,我在 MSDN 上找到了这个:
The WMI formatted class name for a counter object is of the form "Win32_PerfFormattedData_service_name_object_name"
我正在尝试获取 Win32_PerfFormattedData 中的 service_name 和这些服务中的 object_name。
我不确定获取属性是否是我现在想要的方式,但我找不到任何文档来获取服务。它们是一样的吗?而且,如果没有,我怎样才能获得我需要的信息? (service_name 和 object_name)
我也在一些 C# 代码中尝试过这个并得到相同的结果:
ManagementClass processClass = new ManagementClass();
processClass.Path = new ManagementPath("Win32_PerfFormattedData");
PropertyDataCollection properties = processClass.Properties;
Console.WriteLine("\nProperties:");
foreach (PropertyData property in properties)
{
Console.WriteLine(property.Name);
}
我尝试检索方法来检查这是否是我想要的,但没有返回任何内容:
Console.WriteLine("Methods: ");
foreach (MethodData method in methods)
{
Console.WriteLine(method.Name);
}
编辑 2
还有其他方法可以检索这些数据吗?我查看了所有关于 WMI 的 MSDN 文档,我认为要获得我想要的信息,我必须访问该类 (Win32_PerfFormattedData)。我要检索的各种值:
我检索了一些类,这些类将提供其中一些的基本信息,但不会提供最新数据,例如每个逻辑处理器的温度。我已经设法从 Win32_PerfFormattedData_PerfOS_Processor 类中获得 1 项服务,它提供每个逻辑处理器的负载百分比,但该类必须包含我需要的其他服务。
最佳答案
Win32_PerfFormattedData_*
类位于“root\cimv2”命名空间下。要枚举这些类(并获取服务名称),您针对该命名空间运行以下 WQL 查询:
SELECT * FROM meta_class WHERE __Class LIKE "Win32_PerfFormattedData%"
实际上,您可以省略命名空间(至少使用 ManagementObjectSearcher
),在这种情况下,搜索无处不在。以下是使用 C# 搜索 WMI 的方法:
void SearchWmi()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM meta_class WHERE __Class LIKE \"Win32_PerfFormattedData%\"");
foreach (ManagementClass wmiClass in searcher.Get())
{
Console.WriteLine(wmiClass["__CLASS"].ToString());
}
}
您需要添加对 System.Management
的引用以及相应的 using
指令。
您可以找到有关以下方面的性能数据:
CPU:Win32_PerfFormattedData_Processor
内存:Win32_PerfFormattedData_Memory
操作系统:Win32_PerfFormattedData_System
驱动器:Win32_PerfFormattedData_PerfDisk_*
进程:Win32_PerfFormattedData_PerfProc_*
我不知道 GPU。它很可能取决于驱动程序。
有许多带有 UI 和所有好东西的 WMI 资源管理器工具。你试过一些吗?我使用“WMI Explorer 2.0”
可以从here下载
关于c# - 从 WMI 检索格式化的性能数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37710244/
对于 Windows,我可以使用哪些与 WMI 的监视和系统管理功能类似的其他框架或编程语言? 最佳答案 最能与 WMI 的性能监控功能相媲美的是 SNMP (Simple Network Manag
我的客户有一个旧的基于 DOS 的应用程序,它将格式化的输出发送到打印机。我已禁用打印,因此假脱机文件仍保留在打印队列中。我想拿起这些假脱机文件并将它们转换为 PDF 格式(然后最好删除它们)。这可能
给定一个查询,例如 SELECT * FROM WIN32_PROCESS 有没有办法查询结果对象的返回列的名称? 将结果对象中的所有行写入文本文件,例如 最佳答案 Is there a way to
谷歌让我失望,我在 MSDN 上找不到它。 man wmi在 Windows shell 上不起作用... 我正在寻找可以查询的对象列表,以及如何构建查询。 使用 WMI 我的意思是查询语言来查询诸如
我使用 .Net Framework SDK 中的 MgmtClassGen.exe 为 BizTalk 工件(例如主机、主机实例等)生成一些 WMI 包装器类。 我正在使用 HostSetting.
我正在尝试使用 WMI 获取连接到 Windows XP 计算机的硬件打印机列表。我想要的与从 Win32_Printers 获取列表不同,因为我只想获取物理上以盒子形式存在的打印机,从而消除所有“打
我查看了“root\virtualization”命名空间中的几个对象,但我无法找到 Hyper-V 存储给定虚拟机配置文件路径的位置。我需要以编程方式获取此文件路径,或者至少只是给定虚拟机的主路径也
这些都驻留在 root\RSOP\Computer 命名空间中。我得到非空结果的唯一类是 RSOP_RegistryPolicySetting ,而那个只给了我 Windows 更新和系统还原配置的设
有没有办法通过 WMI 创建/删除磁盘分区?我已经能够挂载/卸载虚拟磁盘 (vhd) 并列出它们的分区。 最佳答案 据我所知,在 WMI 中无法创建/删除分区。您可能想查看 Shell Functio
是否有用于 WMI/WBEM 的 OLEDB 提供程序? 换句话说,有人可以通过以下方式访问 WMI: shell vbscript 中的 ADO ASP 脚本中的 ADO Win32 native
我正在尝试破译 SecurityCenter.productState WMI 命名空间中的 productState 属性。 例如,产品状态是一个整数:262144 - 然后您可以查看此文档页面,将
最近很多用户在使用电脑的时候发现了wmi provider host进程占用内存比较大,不知道这个进程到底是干什么的,能不能禁止,怎么禁止。下面来一起看看想想的介绍吧。 wmi provide
我很难过,似乎无法找到明确的答案。我正在尝试通过 WMI 获取网络适配器列表。我一直在使用的命令在我们办公室的几乎所有工作站上都运行良好,没有任何问题。昨天,问题。一台机器出故障。由于它直接在用户
首先,我想说谢谢你帮我解决这个问题。非常感谢您付出的时间和努力。 标题总结得很好,但我将提供一些细节。基本上,如果我使用 C# 提取操作系统版本,它会返回适用于 Windows 8 的结果 6.2,即
我正在检测我是否正在尝试与本地主机建立连接,并创建(或不创建)WMI 连接选项,如下所示: if (NetworkUtils.IsLocalIpAddress(machineName)) {
我们如何枚举所有网络连接,以便使用 WMI 提取 VPN 连接的 IP 地址?在 XP 上,Win32_NetworkAdapterConfiguration 工作正常,但在 Vista 上它似乎只枚
我想使用 WMI(在 C++ 中)来配置静态 IPv6 地址。 使用 EnableStatic 配置静态 IPv4 地址工作正常,它是名为 Win32_NetworkAdapterConfigurat
我用这里的安装程序安装了wmi http://timgolden.me.uk/python/wmi/index.html但我无法导入模块。 这是我的代码: import wmi c=wmi.WMI()
当我尝试这样做时 SetDynamicDNSRegistration(True) 它返回“68”,我在 MSDN WMI page 上查找过它它的意思是“输入参数无效”。 完整脚本 import wm
我尝试使用 convert-vhd 命令将 VHD 转换为 VHDX,但出现以下错误: The Hyper-V Management Tools could not access an expecte
我是一名优秀的程序员,十分优秀!