Příkaz SELECT pro dotazy událostí
K dotazování na informace o událostech můžete použít různé příkazy SELECT. Příkazy můžou být základní příkazy nebo můžou být více omezující a zúžit sadu výsledků vrácenou z dotazu.
Následující příklad je základní příkaz SELECT, který slouží k dotazování na informace o události.
SELECT * FROM EventClass
Když příjemce odešle dotaz, jedná se o žádost o oznámení o všech výskytech události reprezentované EventClass. Tento požadavek zahrnuje žádost o oznámení o všech systémových a nesystémových vlastnostech. Když poskytovatel událostí odešle dotaz, zaregistruje podporu generování oznámení, když dojde k události reprezentované EventClass.
Příjemci mohou místo hvězdičky (*) v příkazu SELECT zadat jednotlivé vlastnosti.
Následující příklad ukazuje, jak dotazovat na konkrétní vlastnosti.
SELECT property_1, property_2, property_3 FROM MyEventClass
Vrátí se však všechny vlastnosti vloženého objektu, i když dotaz určuje vlastnosti vloženého objektu.
Následující příklad ukazuje dva dotazy, které vracejí stejná data.
SELECT targetInstance FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
WHERE targetinstance isa "Win32_Process"
Pokud systémová vlastnost není relevantní pro konkrétní dotaz, obsahuje NULL. Například hodnota systémové vlastnosti __RELPATH je null pro všechny dotazy událostí.
Následující systémové vlastnosti obsahují null pro dotazy událostí:
- \_\_Namespace \_\_Path \_\_RelPath \_\_Server
Další informace naleznete v tématu Referenční informace o systémových vlastnostech rozhraní WMI.
Všechny dotazy událostí můžou obsahovat volitelnou klauzuli WHERE, ale klauzule WHERE se primárně používají k určení dalšího filtrování. Důrazně doporučujeme, aby spotřebitelé vždy zadali klauzuli WHERE. Náklady na složitý dotaz jsou minimální v porovnání s náklady na doručování a zpracování nepotřebných oznámení.
Následující příklad ukazuje dotaz, který požaduje oznámení o všech událostech úpravy instance, které ovlivňují hypotetickou třídu EmailEvent.
SELECT * FROM EmailEvent
Pokud k událostem přidruženým EmailEvent často dochází, příjemce je zahlcený událostmi. Lepší dotaz vyžaduje události pouze v případě, že určité podmínky používají vlastnosti zadané třídy, například když je úroveň důležitosti vysoká.
Následující příklad ukazuje dotaz, který můžete použít, pokud EmailImportance je vlastnost třídy EmailEvent.
SELECT * FROM EmailEvent WHERE EmailImportance > 3
Všimněte si, že rozhraní WMI může dotaz odmítnout z několika důvodů. Dotaz může být například příliš složitý nebo náročný na prostředky pro vyhodnocení. V takovém případě vrátí rozhraní WMI specifické kódy chyb, například WBEM_E_INVALID_QUERY.
Vlastnosti vložených objektů lze použít v klauzuli WHERE.
Následující příklad ukazuje, jak dotazovat na objekty, kde TargetInstance vlastnost __InstanceModificationEvent systémové třídy je vložený Win32_LogicalDisk objekt a FreeSpace je vlastnost Win32_LogicalDisk.
SELECT * FROM __InstanceModificationEvent WITHIN 600
WHERE TargetInstance ISA "Win32_LogicalDisk"
AND TargetInstance.FreeSpace < 1000000