欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WMI入门教程之什么是WMI?

程序员文章站 2022-06-25 10:03:52
wmi出现至今已经二十多年了,但很多人对它并不熟悉。知道它很好很强大,但不知道它从哪里来,怎么工作,使用范围是什么?现在我跟大家说说我的理解。。。  wmi有一组api。...

wmi出现至今已经二十多年了,但很多人对它并不熟悉。知道它很好很强大,但不知道它从哪里来,怎么工作,使用范围是什么?现在我跟大家说说我的理解。。。

 wmi有一组api。我们不管使用vbscript、powershell脚本还是利用c#的来访问wmi的类库,都是因为wmi向外暴露的一组api。这些api是在系统安装wmi模块的时候安装的,通过他们我们能够能拿到我们想要的类。

  wmi有一个存储库。尽管wmi的多数实例数据都不存储在wmi中,但是wmi确实有一个存储库,用来存放提供程序提供的类信息,或者称为类的蓝图或者schema。

  wmi有一个service。wmi总是能够响应用户的访问,那是因为它有一个一直运行的windows服务,名字叫winmgmt。停止这个服务,所有对wmi的操作都将没有反应。

  wmi是可扩展的。人人都知道wmi能干很多事情,读取本机硬盘信息、读取远程计算机的用户信息、读取域用户信息等等。基本上,你能想到的获取或者更改资源的操作,它都能干。可谓吃得少,干得多。它为什么这么能干呢?这基于wmi的可扩展性。wmi对资源的操作,不是它自己实现了什么方法,而完全取决于向它注册的提供程序。

  wmi是管理员日常必备的强大工具之一,是脚本伴侣。当然也可以把一个大型系统建立在wmi以及wmi的提供程序之上。以下给两个使用wmi的例子:

示例一:

本示例利用vb script检查本机的物理内存量:

复制代码 代码如下:

strcomputer = "."

set wbemservices = getobject("winmgmts:\\" & strcomputer)
set wbemobjectset = wbemservices.instancesof("win32_logicalmemoryconfiguration")

for each wbemobject in wbemobjectset
    wscript.echo "total physical memory (kb): " & wbemobject.totalphysicalmemory
next

示例二:

本示例利用powershell检查本机的逻辑硬盘情况:

复制代码 代码如下:

ps c:\users\v-lukez> get-wmiobject -class win32_logicaldisk

结语:

  wmi功能强大,而且一直在发展,但是因为用的人不多,所以一直不温不火。希望更多的人能够慧眼识珠,看到的潜力。