您可以使用各种SELECT语句查询事件信息。这些语句可以是基本语句,也可以限制从查询返回的结果集。
以下示例是用于查询事件信息的基本SELECT语句。
复制代码
SELECT * FROM EventClass
当消费者提交查询时,它将被通知EventClass表示的事件的所有事件。该请求包括关于所有事件系统和非系统属性的通知的请求。当事件提供者提交查询时,当发生EventClass表示的事件时,它会注册生成通知。
消费者可以在SELECT语句中指定单个属性而不是星号(*)。
以下示例显示如何查询特定属性。
SELECT property_1, property_2, property_3 FROM MyEventClass
但是,即使查询指定嵌入对象属性,也会返回嵌入对象的所有属性。
以下示例显示返回相同数据的两个查询。
SELECT targetInstance FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
如果系统属性与特定查询无关,则它包含NULL。例如,对于所有事件查询,__RELPATH系统属性的值为NULL。
对于事件查询,以下系统属性包含NULL:
__Namespace
__路径
__RelPath
__服务器
有关详细信息,请参阅WMI系统属性参考。
所有事件查询都可以包含一个可选的WHERE子句,但WHERE子句主要用于消费者指定额外的过滤。强烈建议消费者始终指定一个WHERE子句。与传递和处理不需要的通知的成本相比,复杂查询的成本是最小的。
以下示例显示一个请求通知所有影响假设类EmailEvent的实例修改事件的查询。
SELECT * FROM EmailEvent
如果与EmailEvent相关联的事件频繁发生,则消费者会充满事件。只有当特定条件使用指定的类的属性(例如重要性级别高)时,更好的查询才会请求事件。
以下示例显示如果EmailImportance属于类EmailEvent的属性,则可以使用该查询。
SELECT * FROM EmailEvent WHERE EmailImportance > 3
请注意,由于许多原因,WMI可以拒绝查询。例如,查询可能太复杂或资源太多,无法进行评估。发生这种情况时,WMI会返回特定的错误代码,例如WBEM_E_INVALID_QUERY。
嵌入式对象的属性可以在WHERE子句中使用。
以下示例显示如何查询__InstanceModificationEvent系统类__InstanceModificationEvent系统类的TargetInstance属性是嵌入式Win32_LogicalDisk对象并且FreeSpace属于Win32_LogicalDisk的属性的对象。
SELECT * FROM __InstanceModificationEvent WITHIN 600
WHERE TargetInstance ISA "Win32_LogicalDisk"
AND TargetInstance.FreeSpace < 1000000