Interrogation avec WQL
Le langage de requête WMI (WQL) est un sous-ensemble du langage de requête structuré standard de l'ANSI SQL (American National Standards Institute) avec des modifications sémantiques mineures pour prendre en charge WMI.
Pour obtenir la liste complète des mots clés WQL pris en charge, consultez WQL (SQL pour WMI). L’utilisation de mots clés SQL pour les noms d’objets ou de propriétés peut empêcher l’analyse d’une requête. Les mots-clés SQL suivants sont restreints : NULL, TRUE et FALSE.
Notes
Le nombre de mots-clés utilisables dans les requêtes WQL est limité. La présence d’un grand nombre de mots-clés WQL dans une requête complexe peut amener WMI à renvoyer le code d’erreur WBEM_E_QUOTA_VIOLATION comme valeur HRESULT. La limite des mots clés WQL dépend de la complexité de la requête.
Les requêtes peuvent utiliser la clause WHERE pour l’extension et la personnalisation, même si ce n’est pas obligatoire. La clause WHERE est composée d’une propriété ou d’un mot clé, d’un opérateur et d’une constante. Toutes les clauses WHERE doivent spécifier l’un des opérateurs prédéfinis inclus dans WQL. Pour plus d’informations sur la syntaxe, consultez Syntaxe WHERE. Pour plus d’informations sur les opérateurs WQL valides, consultez Opérateurs WQL.
Comme pour les autres chaînes de requête SQL, vous pouvez interrompre vos requêtes.
Notes
WQL ne prend pas en charge les requêtes ou associations inter-espaces de noms. Vous ne pouvez pas interroger toutes les instances d’une classe spécifiée résidant dans tous les espaces de noms sur l’ordinateur cible.
WQL prend en charge les types de requêtes suivants :
Requêtes de données
Les requêtes de données sont utilisées pour récupérer des instances de classe et des associations de données. Il s’agit du type de requête le plus couramment utilisé dans les scripts et applications WMI. Pour plus d’informations sur la syntaxe des requêtes de données, consultez Demande de données d’instance de classe. Pour plus d’informations sur les associations, consultez Déclaration d’une classe d’association.
Notes
WQL ne prend pas en charge les requêtes des types de données de tableaux.
L’exemple de requête de données suivant demande le fichier journal d’événements nommé « Application » à toutes les instances de Win32_NTLogEvent.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NTLogEvent " _ & "WHERE Logfile = 'Application'",,48)
Requêtes d’événements
Les consommateurs utilisent des requêtes d’événements pour s’inscrire et recevoir une notification d’événements. Les fournisseurs d’événements utilisent des requêtes d’événements pour s’inscrire afin de prendre en charge un ou plusieurs événements. Pour plus d’informations sur les requêtes d’événements, consultez Réception des notifications d’événements.
L’exemple suivant de requête d’événement par un consommateur d’événements temporaire demande une notification lorsqu’une nouvelle instance d’une classe dérivée de Win32_NTLogEvent est créée.
strComputer = "." Set objWMIService = GetObject("winmgmts:\\" _ & strComputer & "\root\CIMV2") Set objEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceModificationEvent WITHIN 10 WHERE " & _ "TargetInstance ISA 'Win32_Service'" & _ " AND TargetInstance._Class = 'win32_TerminalService'") i = TRUE Do While i = TRUE Set strReceivedEvent = objEvents.NextEvent 'report an event Wscript.Echo "An event has occurred." Loop
Requêtes de schéma
Les requêtes de schéma sont utilisées pour récupérer des définitions de classes (plutôt que des instances de classe) et des associations de schémas. Les fournisseurs de classes utilisent des requêtes de schéma pour spécifier les classes qu’ils prennent en charge au moment de leur enregistrement. Pour plus d’informations sur les requêtes de schéma, consultez Récupération de définitions de classes.
L’exemple de requête de schéma suivant montre la syntaxe spéciale.
SELECT * FROM meta_class WHERE __this ISA "Win32_BaseService"
Rubriques connexes