使用 WMI 脚本类型库

可以使用 WMI 脚本类型库从 Microsoft Visual Studio 调用 WMI 脚本 API 方法,也可以在 Windows 脚本宿主 WSF 文件中调用。

将 WMI 脚本类型库与 Microsoft Visual Studio 一起使用

注意

Visual InterDev 6.0 功能已集成到 Microsoft Visual Studio .NET 中。

 

以下过程介绍如何启用集成开发环境 (IDE) 以了解 WbemScripting 类型库。

将 WMI 脚本类型库添加到项目引用

  1. 从“项目”菜单中选择“添加引用”。

  2. 在“添加引用”框的“COM”选项卡中,选择“Microsoft WMI 脚本 V1.2 库”。

  3. 如果“引用”列表中没有出现合适的选项,请使用“引用”框中的“浏览”来进行添加。 “浏览”会打开“添加引用”框,使你能够找到 WbemScripting 类型库。

    WbemScripting 类型库驻留在 %windir%\System32\Wbem 目录中的 Wbemdisp.tlb 文件中。

  4. 选择该文件,然后单击“打开”。 引用列表中出现了 Microsoft WMI 脚本 V1.2 库。 在此列表中确保选中此项旁边的框。

将 WMI 脚本类型库与 Windows 脚本宿主 2.0 一起使用

可以将对 WbemScripting.SWbemLocator 的引用纳入 Windows 脚本宿主 WSF 文件,这不同于以 Visual Basic Scripting Edition 或其他脚本语言编写的脚本。 这使你能够使用常量名称,而不是值。 例如,设置身份验证时,请使用 WbemAuthenticationLevelPktPrivacy,而非使用值 6。

可以使用以下方法将脚本与适用于 WMI 的脚本 API 类型库相连接:

  • 在 VBScript 方法 CreateObjectGetObject 中指定 WbemScripting GUID。

    这会提醒 Windows 脚本宿主连接到 WMI 对象集。

    以下 VBScript 代码示例创建新的 SWbemDateTime 对象。

    Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
    
  • 获取新的或现有的对象时,请使用名字对象字符串 "winmgmts:"。

    以下 VBScript 代码示例使用 "winmgmts:" 名字对象获取 Handle 属性为 0(零)的 Win32_Process 实例。 Handle 是此类的键属性。

    Set Process = GetObject("winmgmts:Win32_Process.Handle=0")
    
  • 使用 WSH 2.0 XML 文件格式的 <reference> 标记引用 WMI 类型库。 如果使用 <reference> 标记,该标记必须具有值为 WMI 类型库的 GUID 的 uuid 属性,或(建议)具有对象属性,其值是可以创建的任何 WMI 脚本对象的 PROGID。

    以下 VBScript 代码示例使用 "WbemScripting" 的 PROGID。 若要运行该脚本,请将文本保存在扩展名为 .wsf 的文件中。

    <?xml version="1.0" encoding="US-ASCII"?>
    <job>
    <reference object="WbemScripting.SWbemLocator"/>
    <script language="VBScript">
        set service = GetObject("winmgmts:")
        ' Following line uses a symbolic 
        ' constant from the WMI type library
        service.Security_.impersonationLevel = _
            wbemImpersonationLevelDelegate
    </script>
    </job>
    
  • 使用 <object> 标记创建 WMI 脚本对象。 可以使用引用要创建的 WMI 脚本对象名称的值指定 id 属性,并且 progid 属性等于 WMI 脚本对象的 PROID。

    以下 WSH 脚本显示本地计算机上的主机名和处理器数。 若要运行该脚本,请将文本保存在扩展名为 .wsf 的文件中。

    <?xml version="1.0" encoding="US-ASCII"?>
    <job>
     <object id="objSWbemLocator" progid="WbemScripting.SWbemLocator"/>
     <script language="VBScript">
    
      strComputer = "."
      Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
      Set colSettings = objSWbemServices.ExecQuery("Select * From Win32_ComputerSystem")
      For Each objComputer in colSettings
       Wscript.Echo "System Name: " & objComputer.Name
       Wscript.Echo "Number of Processors: " & objComputer.NumberOfProcessors
      Next
    
     </script>
    </job>
    

WMI 中的脚本

适用于 WMI 的脚本 API