Powershell专栏: html
https://www.jb51.net/list/list_234_1.htmshell
https://www.pstips.net/get-wmiobject-becomes-obsolete.htmlide
原文: https://www.jb51.net/article/56233.htm工具
使用WMI归根究竟是对WMI类的访问,如何找到合适的类是其中关键的一步。我一直在为找不到合适的类和命名空间苦恼。你也有这样的问题吗?网站
类层次结构搜索引擎
WMI的类是以命名空间和继承层次方式组织的,呈树形结构。命名空间的根是root,在它的下面还有十几个命名空间,最经常使用的是root\cimv2。命名空间的信息存储在静态类__Namespace类中,要查询当前命名空间下的全部命名空间,能够查看__Namespace类的实例。如下是在个人机器上使用PowerShell查询到的命名空间:
spa
PS C:\Users\idsswtt> Get-WmiObject -Class __namespace -Namespace root | select name
name
----
subscription
DEFAULT
cimv2
Cli
Nap
MicrosoftIISv2
SECURITY
SmsDm
CCMVDI
RSOP
WebAdministration
ccm
WMI
directory
Policy
virtualization
Interop
Hardware
ServiceModel
Microsoft
aspnet
.net
关于命名空间更详细的信息,能够写一个递归的脚原本取得,或者从WMI入门(二):如何使用WMI中提到的WMI CIM Studio工具中查到。code
经常使用WMI类htm
WMI体系结构中有成百上千个类。咱们常常用到的只有其中一部分。其中有些是用来查询实例的,另外一些用来查询类的Schema的。除了上面提到的__Namespace类,咱们还会用到__Win32Provider类,来查询当前系统中都有哪些提供程序。这两个类是系统类。
此外,还有两类WMI类咱们常常用到:CIM_*类和Win32_*类。前者是WMI的核心类和公共类,不少时候也被称为CIM核心类和公共类。后者是Win32扩展类,咱们查询实例多在Win32扩展类中查询。例如Win32_Product、Win32_LogicalDisk等。
WMI类查找手册?
很遗憾的是,到目前为止。我没有发现一个好用的WMI类查找手册。但在微软MSDN网站上,有一个分类。咱们能够依照这个分类来作查询。如下几个连接是我常常用到的,贴在这里,但愿你能用到。
结语
看完上面我写的这些东西,若是你仍是找不到你要的类,那你就只能怪微软了。我以为微软为WMI作的仍是太少,至少在类查询这一起是这样。在微软为WMI投入更多以前,咱们只能依赖经验和搜索引擎来寻找适当的类了。