Get-WmiObject est l'applet de commande la plus importante pour les tâches générales de gestion du système. Tous les paramètres de sous-système critiques sont exposés via WMI. En outre, WMI traite les données comme des objets de collections d'un ou de plusieurs éléments. Parce que Windows PowerShell fonctionne également avec les objets et a un pipeline qui vous permet de traiter un seul ou plusieurs objets de la même façon, l'accès WMI générique vous permet d'effectuer des tâches évoluées moyennant très peu de travail.
Les exemples suivants montrent comment collecter des informations spécifiques en utilisant Get-WmiObject sur un ordinateur arbitraire. Nous affectons comme valeur au paramètre ComputerName le point (.), qui représente l'ordinateur local. Vous pouvez spécifier le nom ou l'adresse IP de tout ordinateur accessible via WMI. Pour récupérer des informations sur l'ordinateur local, vous pouvez omettre « -ComputerName. »
Listage des paramètres des bureaux
Nous commencerons par une commande qui collecte des informations sur les Bureaux de l'ordinateur local.
Get-WmiObject -Class Win32_Desktop -ComputerName .
Les informations retournées concernent tous les Bureaux, qu'ils soient ou non utilisés.
Remarque : | |
Les informations retournées par certaines classes WMI peuvent être très détaillées et incluent souvent des métadonnées sur la classe WMI. Comme la plupart de ces propriétés de métadonnées ont des noms qui commencent par un trait de soulignement double, vous pouvez les filtrer à l'aide de Select-Object. Spécifiez uniquement les propriétés qui commencent par des caractères alphabétiques en utilisant [a-z]* comme valeur de Property. Par exemple : |
Get-WmiObject -Class Win32_Desktop -ComputerName . | Select-Object -Property [a-z]*
Pour filtrer les métadonnées, utilisez un opérateur de pipeline (|) pour envoyer les résultats de la commande Get-WmiObject à Select-Object -Property [a-z]*.
Listage des informations sur le BIOS
La classe WMI Win32_BIOS retourne des informations relativement compactes et complètes à propos du BIOS système de l'ordinateur local :
Get-WmiObject -Class Win32_BIOS -ComputerName .
Listage des informations sur le processeur
Vous pouvez récupérer des informations générales sur le processeur à l'aide de la classe WMI Win32_Processor, même s'il est probable que vous souhaiterez les filtrer :
Get-WmiObject -Class Win32_Processor -ComputerName . | Select-Object -Property [a-z]*
Pour obtenir une chaîne de description générique de la famille du processeur, vous pouvez simplement retourner la propriété Win32_ComputerSystem SystemType :
PS> Get-WmiObject -Class Win32_ComputerSystem -ComputerName . | Select-Object -Property SystemType SystemType ---------- X86-based PC
Listage du fabricant et du modèle de l'ordinateur
Des informations sur le modèle de l'ordinateur sont également disponibles via Win32_ComputerSystem. La sortie standard affichée n'aura besoin d'aucun filtrage pour fournir des données OEM :
PS> Get-WmiObject -Class Win32_ComputerSystem Domain : WORKGROUP Manufacturer : Compaq Presario 06 Model : DA243A-ABA 6415cl NA910 Name : MyPC PrimaryOwnerName : Jane Doe TotalPhysicalMemory : 804765696
L'exactitude de votre sortie pour des commandes telles que celle-ci, qui retournent des informations provenant directement du matériel, ne pourra être supérieure à celle des données dont vous disposez. Certaines informations ne sont pas correctement configurées par les fabricants de matériel et peuvent donc ne pas être disponibles.
Listage des correctifs logiciels installés
Vous pouvez lister tous les correctifs logiciels installés à l'aide de Win32_QuickFixEngineering :
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
Cette classe retourne une liste de correctifs logiciels semblable à celle-ci :
Description : Update for Windows XP (KB910437) FixComments : Update HotFixID : KB910437 Install Date : InstalledBy : Administrator InstalledOn : 12/16/2005 Name : ServicePackInEffect : SP3 Status :
Pour une sortie plus succincte, vous pouvez exclure certaines propriétés. Bien que vous puissiez utiliser le paramètre Get-WmiObject Property pour choisir uniquement le HotFixID, procéder de cette manière retournera en fait plus d'informations, car toutes les métadonnées sont affichées par défaut :
PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property HotFixId HotFixID : KB910437 __GENUS : 2 __CLASS : Win32_QuickFixEngineering __SUPERCLASS : __DYNASTY : __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH :
Des données supplémentaires sont retournées, parce que le paramètre Property de Get-WmiObject limite les propriétés retournées par les instances de classes WMI et non l'objet retourné à Windows PowerShell. Pour réduire la sortie, utilisez Select-Object :
PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property Hot FixId | Select-Object -Property HotFixId HotFixId -------- KB910437
Listage des informations de version d'un système d'exploitation
Les propriétés de la classe Win32_OperatingSystem incluent les informations de version et de Service Pack. Vous pouvez explicitement sélectionner uniquement ces propriétés pour obtenir de Win32_OperatingSystem un résumé des informations de version :
Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion
Vous pouvez également utiliser des caractères génériques avec le paramètre Select-Object Property. Parce que l'important est ici d'utiliser toutes les propriétés qui commencent par Build ou ServicePack, nous pouvons utiliser la forme raccourcie suivante :
PS> Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property Build*,OSType,ServicePack* BuildNumber : 2600 BuildType : Uniprocessor Free OSType : 18 ServicePackMajorVersion : 2 ServicePackMinorVersion : 0
Listage des utilisateurs et du propriétaire locaux
Des informations générales locales sur les utilisateurs (nombre d'utilisateurs sous licence, nombre actuel d'utilisateurs et nom du propriétaire) peuvent être recherchées avec une sélection de propriétés de Win32_OperatingSystem. Vous pouvez sélectionner explicitement les propriétés à afficher comme suit :
Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser
En voici une version plus succincte qui utilise des caractères génériques :
Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property *user*
Obtention de l'espace disque disponible
Pour consulter l'espace disque et l'espace libre pour les lecteurs locaux, vous pouvez utiliser la classe WMI Win32_LogicalDisk. Vous avez uniquement besoin de voir les instances ayant un DriveType de 3 (la valeur que WMI utilise pour les disques durs fixes).
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . DeviceID : C: DriveType : 3 ProviderName : FreeSpace : 65541357568 Size : 203912880128 VolumeName : Local Disk DeviceID : Q: DriveType : 3 ProviderName : FreeSpace : 44298250240 Size : 122934034432 VolumeName : New Volume PS> Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum
Obtention d'informations sur les ouvertures de session
Vous pouvez obtenir des informations générales sur les ouvertures de session associées à des utilisateurs par le biais de la classe WMI Win32_LogonSession :
Get-WmiObject -Class Win32_LogonSession -ComputerName .
Obtention de l'utilisateur connecté à un ordinateur
Vous pouvez afficher l'utilisateur connecté à un système informatique particulier à l'aide de Win32_ComputerSystem. Cette commande retourne uniquement l'utilisateur connecté au Bureau du système :
Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
Obtention de l'heure locale d'un ordinateur
Vous pouvez récupérer l'heure locale actuelle sur un ordinateur spécifique à l'aide de la classe WMI Win32_LocalTime. Parce que cette classe affiche par défaut toutes les métadonnées, vous pouvez les filtrer à l'aide de Select-Object :
PS> Get-WmiObject -Class Win32_LocalTime -ComputerName . | Select-Object -Property [a-z]* Day : 15 DayOfWeek : 4 Hour : 12 Milliseconds : Minute : 11 Month : 6 Quarter : 2 Second : 52 WeekInMonth : 3 Year : 2006
Affichage de l'état des services
Pour consulter l'état de tous les services d'un ordinateur spécifique, vous pouvez utiliser l'applet de commande Get-Service localement comme mentionné précédemment. Pour les systèmes distants, vous pouvez utiliser la classe WMI Win32_Service. Si vous utilisez également Select-Object pour filtrer les résultats sur Status, Name et DisplayName, le format de sortie sera quasiment identique à celui de Get-Service :
Get-WmiObject -Class Win32_Service -ComputerName . | Select-Object -Property Status,Name,DisplayName
Pour permettre l'affichage complet des noms très longs de services occasionnels, vous pouvez utiliser Format-Table avec les paramètres AutoSize et Wrap afin d'optimiser la largeur des colonnes et de faire en sorte qu'au lieu d'être tronqués, les noms longs soient renvoyés à la ligne :
Get-WmiObject -Class Win32_Service -ComputerName . | Format-Table -Property Status,Name,DisplayName -AutoSize -Wrap