勇芳软件工作室.汉化:  Windows Management Instrumentation > Scripting API for WMI > Scripting API Objects > SWbemServices >

ExecQuery Method

Previous pageReturn to chapter overviewNext page

描述

 

SWbemServices对象的ExecQuery方法执行检索对象的查询。这些对象可通过返回的SWbemObjectSet集合获得。

 

这种方法在半同步模式下被调用。有关详细信息,请参阅调用方法.

 

PowerBASIC 语法

 

METHOD ExecQuery ( _

BYVAL strQuery AS WSTRING, _

OPTIONAL BYVAL strQueryLanguage AS WSTRING, _

OPTIONAL BYVAL iFlags AS LONG, _

OPTIONAL BYVAL objWbemNamedValueSet AS IDispatch _

) AS ISWbemObjectSet

 

参数

 

strQuery

 

需要。包含查询文本的字符串。此参数不能为空。

 

strQueryLanguage

 

包含要使用的查询语言的字符串。如果指定,此值必须为“WQL”。

 

iFlags

 

确定查询行为的整数,并确定此调用是否立即返回。此参数的默认值为wbemFlagReturnImmediately.此参数可以接受以下值。

 

含义

wbemFlagForwardOnly

32

&H20

导致只返回枚举器。前向枚举器通常比传统枚举器更快,使用更少的内存,但不允许调用SWbemObject.Clone_.

wbemFlagBidirectional

0

&H0

导致WMI保留枚举对象的指针,直到客户端释放枚举器。

wbemFlagReturnImmediately

16

&H10

使呼叫立即返回。

wbemFlagReturnWhenComplete

0

&H0

使此呼叫阻塞,直到查询完成。该标志在同步模式下调用该方法。

wbemQueryFlagPrototype

2

&H2

用于原型设计。它阻止查询发生,并返回一个看起来像一个典型结果对象的对象。

wbemFlagUseAmendedQualifiers

131072

&H20000

导致WMI使用基类定义返回类修改数据。有关详细信息,请参阅本地化WMI类信息.

 

objWbemNamedValueSet

 

通常,这是未定义的。否则,这是一个SWbemNamedValueSet对象,其元素表示正在为请求提供服务的提供商可以使用的上下文信息。支持或要求此类信息的提供者必须记录识别的值名称,值的数据类型,允许的值和语义。

 

返回值

 

如果没有发生错误,该方法返回一个SWbemObjectSet对象。这是一个包含查询结果集的对象集合。调用者可以使用您正在使用的编程语言的集合的实现来检查集合。有关详细信息,请参阅访问集合.

 

OBJRESULT

 

错误(名称/十进制/十六进制)

含义

wbemErrAccessDenied

-2147217405

&H80041003

当前用户没有查看结果集的权限。

wbemErrFailed

-2147217407

&H80041001

未指定错误

wbemErrInvalidParameter

-2147217400

&H80041008

指定了无效参数。

wbemErrInvalidQueryType

-2147217384

&H80041018

不支持请求的查询语言。

wbemErrOutOfMemory

-2147217402

&H80041006

没有足够的内存来完成操作。

 

示例代码[VBScript]

 

以下VBScript代码示例查找本地计算机上的所有磁盘驱动器,并显示设备ID和磁盘驱动器的类型。

 

设置colDisks = GetObject(_

 “Winmgmts:”)。ExecQuery(“从Win32_LogicalDisk中选择*”)

对于colDisks中的每个objDisk

       

 选择Case objDisk.DriveType

   案例1

     Wscript.Echo“没有根目录。" _

       &“驱动器类型无法”_ _

       &“已确定”。

   案例2

     Wscript.Echo“DeviceID =”&_

       objDisk.DeviceID &_

      “ DriveType =可移动驱动器”    

   案例3

     Wscript.Echo“DeviceID =”& _

       objDisk.DeviceID &_

       “ DriveType =本地硬盘”    

   案例4

     Wscript.Echo“DeviceID =”& _

       objDisk.DeviceID &_

      “ DriveType =网络磁盘”    

   案例5

     Wscript.Echo“DeviceID =”& _

       objDisk.DeviceID &_

      “ DriveType =光盘”    

   案例6

     Wscript.Echo“DeviceID =”& _

       objDisk.DeviceID &_

      “ DriveType = RAM磁盘”    

   Case Else

     Wscript.Echo“驱动器类型无法确定”。

 结束选择

下一个

 

备注

 

查询返回空结果集不是错误的。ExecQuery方法返回关键属性,无论密钥属性是否在strQuery??参数中被请求。如果在执行此方法时发生错误,并且不使用wbemFlagReturnImmediately标志,则在尝试访问返回的对象集之前,对象未设置。但是,如果使用wbemFlagReturnWhenComplete标志,则调用ExecQuery方法时将设置对象。

 

对于可在WQL查询中使用的ANDOR关键字的数量有限制。在复杂查询中使用的大量WQL关键字可能导致WMI返回作为HRESULT值的WBEM_E_QUOTA_VIOLATION错误代码。WQL关键字的限制取决于查询的复杂程度。

 

要求

 

客户

需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95 OSR2及更高版本。

服务器

需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。

类型库

使用Wbemdisp.tlb。

Wbemdisp.inc。

DLL

需要Wbemdisp.dll。