Sdílet prostřednictvím


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