Partager via


Instruction SELECT pour les requêtes d’événements

Vous pouvez utiliser diverses instructions SELECT pour rechercher des informations sur les événements. Les instructions peuvent être des instructions de base ou elles peuvent être plus restrictives pour affiner le jeu de résultats retourné par la requête.

L’exemple suivant est une instruction SELECT de base utilisée pour rechercher des informations sur les événements.

SELECT * FROM EventClass

Lorsqu’un consommateur envoie une requête, il s’agit d’une demande d’être avertie de toutes les occurrences de l’événement représenté par EventClass. Cette demande inclut une demande de notification concernant tous les systèmes d’événements et les propriétés non système. Lorsqu’un fournisseur d’événements envoie une requête, il inscrit la prise en charge de la génération de notifications lorsqu’un événement représenté par EventClass se produit.

Les consommateurs peuvent spécifier des propriétés individuelles au lieu de l’astérisque (*) dans l’instruction SELECT.

L’exemple suivant montre comment interroger des propriétés spécifiques.

SELECT property_1, property_2, property_3 FROM MyEventClass

Toutefois, toutes les propriétés d’un objet incorporé sont retournées, même si la requête spécifie des propriétés d’objet incorporées.

L’exemple suivant montre deux requêtes qui retournent les mêmes données.

SELECT targetInstance FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"
SELECT targetInstance.Name FROM __InstanceCreationEvent within 2
    WHERE targetinstance isa "Win32_Process"

Si une propriété système n’est pas pertinente pour une requête spécifique, elle contient NULL. Par exemple, la valeur de la propriété système __RELPATH est NULL pour toutes les requêtes d’événements.

Les propriétés système suivantes contiennent NULL pour les requêtes d’événements :

\_\_Namespace \_\_Path \_\_RelPath \_\_Server

Pour plus d’informations, consultez référence de propriété système WMI.

Toutes les requêtes d’événements peuvent inclure une clause WHERE facultative , mais les clauses WHERE sont principalement utilisées par les consommateurs pour spécifier un filtrage supplémentaire. Il est fortement recommandé que les consommateurs spécifient toujours une clause WHERE. Le coût d’une requête complexe est minimal par rapport au coût de remise et de traitement des notifications inutiles.

L’exemple suivant montre une requête qui demande des notifications de tous les événements de modification d’instance qui affectent la classe hypothétique EmailEvent.

SELECT * FROM EmailEvent

Si des événements associés à EmailEvent se produisent fréquemment, le consommateur est inondé d’événements. Une meilleure requête demande des événements uniquement lorsque des conditions spécifiques utilisent des propriétés de la classe spécifiée, par exemple lorsque le niveau d’importance est élevé.

L’exemple suivant montre la requête que vous pouvez utiliser si EmailImportance est une propriété de la classe EmailEvent.

SELECT * FROM EmailEvent WHERE EmailImportance > 3

Notez que WMI peut rejeter une requête pour plusieurs raisons. Par exemple, la requête peut être trop complexe ou gourmande en ressources pour l’évaluation. Lorsque cela se produit, WMI retourne des codes d’erreur spécifiques, tels que WBEM_E_INVALID_QUERY.

Les propriétés des objets incorporés peuvent être utilisées dans la clause WHERE.

L’exemple suivant montre comment rechercher des objets où la propriété TargetInstance de la classe système __InstanceModificationEvent est un objet Win32_LogicalDisk incorporé et FreeSpace est une propriété de Win32_LogicalDisk.

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