使用 WMI 脚本类型库
可以使用 WMI 脚本类型库从 Microsoft Visual Studio 调用 WMI 脚本 API 方法,也可以在 Windows 脚本宿主 WSF 文件中调用。
将 WMI 脚本类型库与 Microsoft Visual Studio 一起使用
注意
Visual InterDev 6.0 功能已集成到 Microsoft Visual Studio .NET 中。
以下过程介绍如何启用集成开发环境 (IDE) 以了解 WbemScripting 类型库。
将 WMI 脚本类型库添加到项目引用
从“项目”菜单中选择“添加引用”。
在“添加引用”框的“COM”选项卡中,选择“Microsoft WMI 脚本 V1.2 库”。
如果“引用”列表中没有出现合适的选项,请使用“引用”框中的“浏览”来进行添加。 “浏览”会打开“添加引用”框,使你能够找到 WbemScripting 类型库。
WbemScripting 类型库驻留在 %windir%\System32\Wbem 目录中的 Wbemdisp.tlb 文件中。
选择该文件,然后单击“打开”。 引用列表中出现了 Microsoft WMI 脚本 V1.2 库。 在此列表中确保选中此项旁边的框。
将 WMI 脚本类型库与 Windows 脚本宿主 2.0 一起使用
可以将对 WbemScripting.SWbemLocator 的引用纳入 Windows 脚本宿主 WSF 文件,这不同于以 Visual Basic Scripting Edition 或其他脚本语言编写的脚本。 这使你能够使用常量名称,而不是值。 例如,设置身份验证时,请使用 WbemAuthenticationLevelPktPrivacy,而非使用值 6。
可以使用以下方法将脚本与适用于 WMI 的脚本 API 类型库相连接:
在 VBScript 方法 CreateObject 和 GetObject 中指定 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>
相关主题