事件查詢的 SELECT 語句
您可以使用各種 SELECT 語句來查詢事件資訊。 這些語句可以是基本語句,也可以限制為縮小從查詢傳回的結果集。
下列範例是用來查詢事件資訊的基本 SELECT 語句。
SELECT * FROM EventClass
當取用者提交查詢時,系統會要求通知 EventClass所表示的所有事件。 此要求包含所有事件系統和非系統屬性的通知要求。 當事件提供者提交查詢時,它會在發生事件 Event Class 所表示的事件時,註冊產生通知的支援。
取用者可以在 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