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

Vous pouvez utiliser diverses instructions SELECT pour interroger les informations d’événement. Les instructions peuvent être des instructions de base ou être plus restrictives pour restreindre 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 d’événement.

SELECT * FROM EventClass

Lorsqu’un consommateur envoie une requête, il s’agit d’une demande de notification de toutes les occurrences de l’événement représenté par EventClass. Cette demande inclut une demande de notification concernant toutes les propriétés du système d’événements et 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 les propriétés de l’objet incorporé.

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 des propriétés 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 vivement recommandé aux consommateurs de toujours spécifier une clause WHERE. Le coût d’une requête complexe est minime 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 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. Dans ce cas, 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 interroger des objets où la propriété TargetInstance de la classe système __InstanceModificationEvent est un objet incorporé Win32_LogicalDisk et FreeSpace est une propriété de Win32_LogicalDisk.

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