Collecte d’informations sur les ordinateurs

Cet exemple s’applique uniquement aux plateformes Windows.

Les applets de commande du module CimCmdlets sont les applets de commande les plus importants pour les tâches générales de gestion du système. Tous les paramètres critiques du sous-système sont exposés via WMI. En outre, WMI traite les données en tant qu’objets figurant dans des collections d’un ou plusieurs éléments. Étant donné que PowerShell fonctionne également avec des objets et dispose d’un pipeline permettant de traiter un ou plusieurs objets de la même façon, l’accès générique à WMI permet d’effectuer des tâches avancées sans grand effort.

Affichage de la liste des paramètres de bureau

Nous allons commencer par une commande qui collecte des informations concernant les postes de travail sur l’ordinateur local.

Get-CimInstance -ClassName Win32_Desktop

Cette commande retourne des informations sur tous les postes de travail, qu’ils soient en cours d’utilisation ou non.

Notes

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.

Étant donné que la plupart de ces propriétés de métadonnées portent des noms commençant par Cim, vous pouvez filtrer les propriétés à l’aide de Select-Object. Spécifiez le paramètre -ExcludeProperty avec "Cim*" comme valeur. Par exemple :

Get-CimInstance -ClassName Win32_Desktop | Select-Object -ExcludeProperty "CIM*"

Pour exclure les métadonnées, utilisez un opérateur de pipeline (|) pour envoyer les résultats de la commande Get-CimInstance à Select-Object -ExcludeProperty "CIM*".

Affichage d’informations sur le BIOS

La classe WMI Win32_BIOS retourne des informations relativement compactes et complètes sur le BIOS de l’ordinateur local :

Get-CimInstance -ClassName Win32_BIOS

Affichage d’informations sur le processeur

Vous pouvez récupérer des informations générales sur le processeur à l’aide de la classe Win32_Processor de WMI, même si vous pouvez filtrer les informations :

Get-CimInstance -ClassName Win32_Processor | Select-Object -ExcludeProperty "CIM*"

Pour une chaîne de description générique de la famille de processeurs, vous pouvez simplement retourner la propriété SystemType :

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property SystemType

SystemType
----------
X86-based PC

Affichage du modèle et du fabricant de l’ordinateur

Des informations sur le modèle d’ordinateur sont également accessibles par le biais de l’applet de commande Win32_ComputerSystem. La sortie standard affichée ne nécessite pas de filtrage pour fournir des données OEM :

Get-CimInstance -ClassName Win32_ComputerSystem
Name PrimaryOwnerName Domain    TotalPhysicalMemory Model                   Manufacturer
---- ---------------- ------    ------------------- -----                   ------------
MyPC Jane Doe         WORKGROUP 804765696           DA243A-ABA 6415cl NA910 Compaq Presario 06

La qualité de la sortie de telles commandes, qui retournent des informations directement à partir de certains composants matériels, dépend des données dont vous disposez. Il se peut que des informations mal configurées par certains fabricants de matériel ne soient pas être disponibles.

Affichage de la liste des correctifs installés

Vous pouvez afficher la liste de tous les correctifs à l’aide de la classe Win32_QuickFixEngineering :

Get-CimInstance -ClassName Win32_QuickFixEngineering

Cette classe retourne une liste des correctifs ressemblant à ceci :

Source Description     HotFixID  InstalledBy   InstalledOn PSComputerName
------ -----------     --------  -----------   ----------- --------------
       Security Update KB4048951 Administrator 12/16/2017  .

Pour une sortie plus concise, vous pouvez exclure certaines propriétés. Vous pouvez utiliser le paramètre Property de Get-CimInstance pour choisir uniquement le HotFixID. Cela permet d’obtenir plus d’informations, car toutes les métadonnées sont affichées par défaut :

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixID
InstalledOn           :
Caption               :
Description           :
InstallDate           :
Name                  :
Status                :
CSName                :
FixComments           :
HotFixID              : KB4533002
InstalledBy           :
ServicePackInEffect   :
PSComputerName        :
CimClass              : root/cimv2:Win32_QuickFixEngineering
CimInstanceProperties : {Caption, Description, InstallDate, Name…}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties
...

Les données supplémentaires sont retournées, car le paramètre Propriété dans Get-CimInstance restreint les propriétés retournées par les instances de classe WMI, pas l’objet retourné à PowerShell. Pour réduire la sortie, utilisez Select-Object :

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixId |
    Select-Object -Property HotFixId
HotFixId
--------
KB4048951

Affichage d’informations sur la version du système d’exploitation

Les propriétés de la classe Win32_OperatingSystem incluent des informations sur la version et le Service Pack. Vous ne pouvez sélectionner explicitement que ces propriétés pour obtenir un résumé d’informations sur la version à partir de la classe Win32_OperatingSystem :

Get-CimInstance -ClassName Win32_OperatingSystem |
  Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion

Vous pouvez également utiliser des caractères génériques avec le paramètre Property. Étant donné que l’utilisation de toutes les propriétés commençant par Build ou ServicePack est importante ici, nous pouvons raccourcir cela en utilisant la forme suivante :

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property Build*,OSType,ServicePack*
BuildNumber             : 18362
BuildType               : Multiprocessor Free
OSType                  : 18
ServicePackMajorVersion : 0
ServicePackMinorVersion : 0

Affichage des utilisateurs locaux et du propriétaire

Vous trouverez des informations générales sur les utilisateurs locaux avec une sélection de propriétés de la classe Win32_OperatingSystem. Vous pouvez sélectionner explicitement les propriétés à afficher comme suit :

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property NumberOfLicensedUsers, NumberOfUsers, RegisteredUser

Une version plus concise utilisant des caractères génériques est la suivante :

Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property *user*

Obtention de l’espace disque disponible

Pour afficher l’espace disque et l’espace libre sur les lecteurs locaux, vous pouvez utiliser la classe Win32_LogicalDisk. Vous ne devez voir que les instances dont DriveType a la valeur 3 (valeur que WMI utilise pour les disques durs fixes).

Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3"
DeviceID DriveType ProviderName VolumeName Size         FreeSpace   PSComputerName
-------- --------- ------------ ---------- ----         ---------   --------------
C:       3                      Local Disk 203912880128 65541357568 .
Q:       3                      New Volume 122934034432 44298250240 .
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
    Measure-Object -Property FreeSpace,Size -Sum |
    Select-Object -Property Property,Sum
Property           Sum
--------           ---
FreeSpace 109839607808
Size      326846914560

Obtention d’informations sur l’ouverture de session

Vous pouvez obtenir des informations générales sur les ouvertures de session associées aux utilisateurs par le biais de la classe WMI Win32_LogonSession :

Get-CimInstance -ClassName Win32_LogonSession

Obtention de l’utilisateur connecté à un ordinateur

Vous pouvez afficher l’utilisateur connecté à un système informatique particulier à l’aide de la commande Win32_ComputerSystem. Cette commande retourne uniquement l’utilisateur connecté au bureau du système :

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

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.

Get-CimInstance -ClassName Win32_LocalTime
Day            : 23
DayOfWeek      : 1
Hour           : 8
Milliseconds   :
Minute         : 52
Month          : 12
Quarter        : 4
Second         : 55
WeekInMonth    : 4
Year           : 2019
PSComputerName :

Affichage de l’état du service

Pour afficher l’état de tous les services sur un ordinateur spécifique, vous pouvez utiliser localement l’applet de commande Get-Service. Pour des systèmes distants, vous pouvez utiliser la classe WMI Win32_Service. Si vous utilisez également Select-Object pour filtrer les résultats pour Status, Name et DisplayName, le format de sortie est quasiment identique à celui de Get-Service :

Get-CimInstance -ClassName Win32_Service |
    Select-Object -Property Status,Name,DisplayName

Pour permettre l’affichage complet des noms des services dont les noms sont longs, utilisez les paramètres AutoSize et Wrap de Format-Table. Ces paramètres optimisent la largeur des colonnes et permettent aux noms longs d’être encapsulés au lieu d’être tronqués :

Get-CimInstance -ClassName Win32_Service |
    Format-Table -Property Status, Name, DisplayName -AutoSize -Wrap