事件查詢的 SELECT 語句

您可以使用各種 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 \_\_Path \_\_RelPath \_\_Server

如需詳細資訊,請參閱 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 系統類別的 TargetInstance 屬性是內嵌 Win32_LogicalDisk 物件, FreeSpace 是 Win32_LogicalDisk 的屬性

SELECT * FROM __InstanceModificationEvent WITHIN 600
    WHERE TargetInstance ISA "Win32_LogicalDisk" 
    AND   TargetInstance.FreeSpace < 1000000