我眼中的脚本:WMI使用举例

什么是WMI?
WMI是Windows Management Instrumentation的缩写,简单来说就是我们可以使用来获得和管理Windows各种信息的接口。更官方的介绍可以查看这篇文章:
http://www.microsoft.com/china/M ... pting.mspx?mfr=true
到具体操作时,我们将使用WQL。什么是WQL?从字面上看很熟悉吧,熟悉数据库的朋友马上会想到SQL。是的,WQL是类似SQL的结构化查询语言,两者的语法也很像,因此熟悉数据库的朋友很快就能理解。不熟悉的朋友也不要担心,因为WQL还是比较容易理解的。下面简单来举一个WQL的例子:
复制内容到剪贴板
代码:
Select * from Win32_Account
其中“select * from ”一般情况下我们可以不去改动,Win32_Account就是WMI的庞大数据库里的一个分支。既然说道庞大,那肯定会有朋友问,我们如何知道所有的分支呢?其实Windows已经自带了一个工具供我们查找。在“运行”对话框中输入“c:/windows/system32/wbem/wbemtest.exe”将会启动“windows管理规范测试器”,随后我们单击“连接”,在第一个文本框中输入“root/cimv2”,其它选项保持默认,然后单击连接返回程序主界面。我们再单击枚举类别,在“超类别信息”中选择“递归”,再次单击确定将出现查询结果,其中以Win32开头的都是我们有可能会用到的类别,因此大家如果哪天想要取得某一信息的时候不妨用这个工具查看一下。如果嫌这个方法比较麻烦的话不妨去下一个叫vbsedit的程序,它能大大减轻我们在使用WMI编程时的负担。
下面举的一个例子是我在winos解决的一个问题,我先放出代码,随后再解释。
复制内容到剪贴板
代码:
On Error Resume Next '错误处理
strComputer = "." '“.”在WMI代表本地计算机
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
'连接到WMI
                        Set colItems = objWMIService.ExecQuery("Select * from Win32_Process where name ='notepad.exe'") '执行WMI查询
                        'notepad.exe为需要检测的是否已经运行的进程!
                        
                        If colItems.count = 0 Then
                                mshell.run("notepad.exe") '指定要运行的程序
                        Else 
                                wscript.Echo "程序已经运行。"
                        End if
要在脚本使用WMI,首先需要创建WMI对象,使用
复制内容到剪贴板
代码:
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")即可
随后执行WMI查询即可Select * from Win32_Process where name ='notepad.exe'"其中where后跟随的是附加条件。如果是一般枚举信息的话可以参考以下脚本。
复制内容到剪贴板
代码:
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process",,48)
For Each objItem in colItems
        WScript.Echo "Caption: " & objItem.Caption
        WScript.Echo "ProcessId: " & objItem.ProcessId
        WScript.Echo ""
Next
以上脚本将会显示当前的进程及其PID,建议使用“cscript test.vbs”执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值