RUBRIQUE about_WMI_cmdlets DESCRIPTION COURTE Fournit des informations générales sur WMI (Windows Management Instrumentation) et Windows PowerShell. DESCRIPTION LONGUE Cette rubrique fournit des informations sur la technologie WMI, les applets de commande WMI pour Windows PowerShell, la communication à distance WMI, les accélérateurs WMI et la résolution des problèmes WMI. Elle propose également des liens vers d'autres informations sur WMI. À propos de WMI WMI est l'implémentation Microsoft de WBEM (Web-Based Enterprise Management), qui est une initiative de l'industrie pour développer une technologie standard permettant d'accéder aux informations de gestion dans un environnement d'entreprise. WMI utilise la norme industrielle CIM (Common Information Model) pour représenter les systèmes, applications, réseaux, périphériques et autres composants managés. La norme CIM est développée et gérée par la commission spéciale pour la gestion distribuée. Vous pouvez utiliser WMI pour gérer à la fois les ordinateurs locaux et distants. Vous pouvez par exemple utiliser WMI pour effectuer ce qui suit : -- Démarrer un processus sur un ordinateur distant. -- Redémarrer un ordinateur à distance. -- Obtenir une liste des applications qui sont installées sur un ordinateur local ou distant. -- Interroger les journaux des événements Windows sur un ordinateur local ou distant. Applets de commande WMI pour Windows PowerShell Windows PowerShell implémente les fonctionnalités WMI par le biais d'un ensemble d'applets de commande qui sont disponibles dans Windows PowerShell par défaut. Vous pouvez utiliser ces applets de commande pour effectuer les tâches de bout en bout qui sont nécessaires à la gestion des ordinateurs locaux et distants. Les applets de commande WMI suivantes sont incluses. Applet de commande Description ------------------ ---------------------------------------------- Get-WmiObject Obtient des instances des classes WMI ou des informations sur les classes disponibles. Invoke-WmiMethod Appelle les méthodes WMI. Register-WmiEvent S'abonne à un événement WMI. Remove-WmiObject Supprime des instances et des classes WMI. Set-WmiInstance Crée ou modifie des instances de classes WMI. Exemples de commandes La commande suivante affiche les informations sur le BIOS pour l'ordinateur local. C:\PS> get-wmiobject win32_bios | format-list * La commande suivante affiche des informations sur le service WinRM pour trois ordinateurs distants. C:\PS> get-wmiobject -query "select * from win32_service where name='WinRM'" -computername server01, server01, server03 La commande plus complexe suivante ferme toutes les instances d'un programme. C:\PS> notepad.exe C:\PS> $np = get-wmiobject -query "select * from win32 _process where name='notepad.exe'" C:\PS> $np | remove-wmiobject Communication à distance WMI Même si la possibilité de gérer un système local par le biais de WMI est utile, ce sont les fonctionnalités de communication à distance qui font de WMI un puissant outil d'administration. WMI utilise le modèle DCOM (Distributed Component Object Model) de Microsoft pour se connecter aux systèmes et les gérer. Il est possible que vous deviez configurer certains systèmes pour permettre les connexions DCOM. Les paramètres du pare-feu et les autorisations DCOM verrouillées peuvent empêcher WMI de gérer les systèmes à distance. Accélérateurs types WMI Windows PowerShell inclut des accélérateurs types WMI. Ces accélérateurs types WMI (raccourcis) permettent un accès plus direct aux objets WMI qu'avec un accélérateur sans type. Les accélérateurs types suivants sont pris en charge avec WMI : [WMISEARCHER] - Raccourci pour la recherche d'objets WMI. [WMICLASS] - Raccourci pour l'accès aux propriétés et méthodes statiques d'une classe. [WMI] - Raccourci pour l'obtention d'une seule instance d'une classe. [WMISEARCHER] est un accélérateur type pour ManagementObjectSearcher. Il peut accepter un constructeur String pour créer un outil de recherche sur lequel vous pouvez ensuite effectuer une opération GET(). Par exemple : PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount > 1000' PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto handlecount __PATH name ----------- ------ ----- 1105 \\SERVER01\root\cimv2:Win32_Process.Handle="3724" powershell... 1132 \\SERVER01\root\cimv2:Win32_Process.Handle="1388" winlogon.exe 1495 \\SERVER01\root\cimv2:Win32_Process.Handle="2852" iexplore.exe 1699 \\SERVER01\root\cimv2:Win32_Process.Handle="1204" OUTLOOK.EXE 1719 \\SERVER01\root\cimv2:Win32_Process.Handle="1912" iexplore.exe 2579 \\SERVER01\root\cimv2:Win32_Process.Handle="1768" svchost.exe [WMICLASS] est un accélérateur type pour ManagementClass. Il contient un constructeur String qui utilise un chemin d'accès WMI local ou absolu à une classe WMI et retourne un objet qui est lié à cette classe. Par exemple : PS> $c = [WMICLASS]"root\cimv2:WIn32_Process" PS> $c |fl * Name : Win32_Process __GENUS : 1 __CLASS : Win32_Process __SUPERCLASS : CIM_Process __DYNASTY : CIM_ManagedSystemElement __RELPATH : Win32_Process __PROPERTY_COUNT : 45 __DERIVATION : {CIM_Process, CIM_LogicalElement, CIM_ManagedSystemElement} __SERVER : SERVER01 __NAMESPACE : ROOT\cimv2 __PATH : \\SERVER01\ROOT\cimv2:Win32_Process [WMI] est un accélérateur type pour ManagementObject. Il contient un constructeur String qui utilise un chemin d'accès WMI local ou absolu à une instance WMI et retourne un objet qui est lié à cette instance. Par exemple : PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handle="1204"' PS> $p.Name OUTLOOK.EXE Résolution des problèmes WMI Les problèmes suivants sont les problèmes les plus courants qui peuvent se poser lorsque vous essayez de vous connecter à un ordinateur distant. Problème 1 : l'ordinateur distant n'est pas en ligne. Si un ordinateur est hors connexion, vous ne pourrez pas vous y connecter à l'aide de WMI. Vous pouvez recevoir le message d'erreur suivant : " Le serveur distant n'existe pas ou n'est pas disponible " Si vous recevez ce message d'erreur, vérifiez que l'ordinateur est en ligne. Essayez d'effectuer un test Ping de l'ordinateur distant. Problème 2 : vous ne disposez pas de droits d'administrateur local sur l'ordinateur distant. Pour utiliser WMI à distance, vous devez disposer de droits d'administrateur local sur l'ordinateur distant. Dans le cas contraire, l'accès à cet ordinateur sera refusé. Pour vérifier la sécurité de l'espace de noms : a. Cliquez sur Démarrer, cliquez avec le bouton droit sur Poste de travail, puis cliquez sur Gérer. b. Dans Gestion de l'ordinateur, développez Services et applications, cliquez avec le bouton droit sur Contrôle WMI, puis cliquez sur Propriétés. c. Dans la boîte de dialogue des propriétés du contrôle WMI, cliquez sur l'onglet Sécurité. Problème 3 : un pare-feu bloque l'accès à l'ordinateur distant. WMI utilise les protocoles DCOM (Distributed COM) et RPC (Remote Procedure Call) pour parcourir le réseau. Par défaut, de nombreux pare-feu bloquent le trafic DCOM et RPC. Si votre pare-feu bloque ces protocoles, la connexion échoue. Par exemple, le Pare-feu Windows dans Microsoft Windows XP Service Pack 2 est configuré pour bloquer automatiquement tout le trafic réseau non sollicité, y compris DCOM et WMI. Dans sa configuration par défaut, le Pare-feu Windows refuse une demande WMI entrante et vous recevez le message d'erreur suivant : " Le serveur distant n'existe pas ou n'est pas disponible " Informations supplémentaires sur WMI Pour plus d'informations sur WMI, consultez les rubriques suivantes (pages éventuellement en anglais) dans MSDN (Microsoft Developer Network) Library : " About WMI " https://go.microsoft.com/fwlink/?LinkId=142212 " WMI Troubleshooting " https://go.microsoft.com/fwlink/?LinkId=142213 Consultez également " Secrets of Windows Management Instrumentation - Troubleshooting and Tips " (page éventuellement en anglais) dans Microsoft TechNet Script Center : https://go.microsoft.com/fwlink/?LinkId=142214 VOIR AUSSI Version en ligne : https://go.microsoft.com/fwlink/?LinkId=142219 Get-WmiObject Invoke-WmiMethod Register-WmiEvent Remove-WmiObject Set-WmiInstance