在 Windows Management Instrumentation (WMI) SDK 中,C++ Provider 对象、COM+ IWbemServices 对象和脚本 SWbemServices 对象都有一个名为 ExecQuery 的方法。可以使用该方法查询数据存储(如配置数据库),就像您可以查询 SQL 或 Access 数据库那样。查询字符串可以使用 WMI 查询语言 (WQL),在 WMI Development Environment、WMI Query Language 下的 WMI SDK 中有所解释。请首先阅读开始的三个文档,它们将指导您以 WQL 构建查询字符串,然后再阅读有关 Data Queries 的部分。
下面的代码示例使用 SELECT 语句枚举服务器上的所有服务。
VBScript |
for each item in GetObject("winmgmts://MyMachine").ExecQuery("select * from win32_service") WScript.Echo item.name next |
---|---|
JScript |
var e = new Enumerator(GetObject("winmgmts://MyMachine").ExecQuery("select * from win32_service")); for(; ! e.atEnd(); e.moveNext()) { x = e.item(); WScript.Echo(x.Name); } |
可以在 IIS WMI 提供程序中为对象执行相同的操作。下面的代码示例枚举了服务器上属于
VBScript |
for each item in GetObject("winmgmts://MyMachine/root/MicrosoftIISv2").ExecQuery("select * from |
---|---|
JScript |
var e = new Enumerator(GetObject("winmgmts://MyMachine/root/MicrosoftIISv2").ExecQuery("select * from |
另外再添加一些代码,就可以打印出每一个实例中的所有属性。使用了 on error resume next 命令,因为一些属性是对象阵列,并需要更多专门的代码才能将它们打印出来。
VBScript |
on error resume next for each item in GetObject("winmgmts://MyMachine/root/MicrosoftIISv2").ExecQuery("select * from |
---|---|
JScript |
var e = new Enumerator(GetObject("winmgmts://MyMachine/root/MicrosoftIISv2").ExecQuery("select * from |
有时服务器管理员需要查找其属性值是特定值的对象的实例。例如,要确定哪些虚拟目录有应用程序池,请使用下面的代码。
VBScript |
for each item in GetObject("winmgmts://MyMachine/root/MicrosoftIISv2").ExecQuery("SELECT * FROM |
---|---|
JScript |
var e = new Enumerator(GetObject("winmgmts://MyMachine/root/MicrosoftIISv2").ExecQuery("SELECT * FROM |