18/12/2024

PowerShell

Obtenir des informations sur l’OS en PowerShell

I. Présentation

On se retrouve dans ce tutoriel pour parler PowerShell et pour vous donner une petite astuce qui pourrait être bien utile dans vos scripts. En effet, nous allons voir comment récupérer des infos sur votre système d'exploitation en PowerShell, ce qui pourra être utile dans vos phases conditionnelles au sein de vos scripts.

Par exemple, on pourra tester pour voir si l'OS est en version 32 ou 64 bits et en conséquence réaliser une action particulière. On peut imaginer que si c'est en version 32 bits on installera la version 32 bits d'un logiciel, et la version 64 bits si la machine est en 64 bits.

Dans ce tutoriel, on s'appuiera essentiellement sur l'utilisation de la commande "Get-WmiObject" qui dispose aussi d'un équivalent nommé "Get-CimInstance".

II. Get-WmiObject et Win32_OperatingSystem

On va commencer par ouvrir une console PowerShell, puis vous allez saisir la commande ci-dessous qui va chercher les infos au sein de la classe "Win32_OperatingSystem.

Get-WmiObject Win32_OperatingSystem

Cette commande retourne par défaut 6 informations :

- Le répertoire d'installation de Windows : SystemDirectory
- L'organisation : Organization
- Le numéro de la Build : BuildNumber
- L'utilisateur : RegisteredUser
- ID de produit : SerialNumber
- Version de l'OS : Version

Voici un exemple de sortie :

ps-get-os-info-1

Maintenant, on peut aller plus loin en choisissant des propriétés supplémentaires, d'ailleurs on peut obtenir la liste de toutes les propriétés disponibles avec la commande suivante :

Get-WmiObject Win32_OperatingSystem | gm -MemberType Property

"gm" est un alias de "Get-Member".

On peut sélectionner par exemple :

- Le nom complet de l'OS : Caption
- La version : Version
- Le Service Pack : ServicePackMajorVersion
- L'architecture (32 ou 64 bits) : OSArchitecture
- Le nom de l'ordinateur : CSName
- Le répertoire d'installation de Windows : WindowsDirectory
- Le nombre d'utilisateurs locaux : NumberOfUsers
- Le périphérique de démarrage : BootDevice

Ainsi, après le pipeline on indiquera "Select-Object" suivi du nom des propriétés que l'on veut afficher.

Get-WmiObject Win32_OperatingSystem | Select-Object Caption, Version, ServicePackMajorVersion, OSArchitecture, CSName, WindowsDirectory, NumberOfUsers, BootDevice

On obtiendra ceci :

ps-get-os-info-2

Maintenant, on peut affecter cette commande à une variable pour stocker le résultat et l'exploiter par la suite dans un script. Par exemple, on utilisera la variable "OSInfo".

$OSInfo = Get-WmiObject Win32_OperatingSystem | Select-Object Caption, Version, ServicePackMajorVersion, OSArchitecture, CSName, WindowsDirectory, NumberOfUsers, BootDevice

Ensuite, si on veut savoir s'il s'agit d'un OS en 32 ou 64 bits, on indiquera :

$OSInfo.OSArchitecture

Voyez par vous-même :

ps-get-os-info-3

III. Get-WmiObject et SoftwareLicensingService

Pour terminer ce tutoriel, nous allons utiliser la classe "SoftwareLicensingService" qui permet de récupérer la clé de licence Windows installée sur votre machine. Pour cela, on va préciser la classe puis dans le pipeline on sélectionnera seulement la propriété "OA3xOriginalProductKey" qui contient cette info. Par curiosité, vous pouvez exécuter la commande sans sélectionner cette propriété pour voir toutes les infos.

Get-WmiObject SoftwareLicensingService | Select-Object OA3xOriginalProductKey

Et voilà notre clé :

ps-get-os-info-4

Enfin, sachez que l'on peut utiliser Get-WmiObject et Get-CimInstance pour récupérer des infos à distance sur d'autres machines, il faudra ajouter l'option "ComputerName" dans la commande suivie du ou des noms de machine(s) ciblée(s).

Get-WmiObject SoftwareLicensingService -ComputerName FloHypervisor,FloStation

N'hésitez pas à partager cet article et à publier un commentaire si vous connaissez d'autres commandes pour récupérer des infos croustillantes.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Obtenir des informations sur l’OS en PowerShell

  • mon windows 10 est activé numériquement, speecy me donne une clef, KeyFinder.exe m’en donne une autre et avec votre « astuce »
    C:\>powershell « Get-WmiObject SoftwareLicensingService | Select-Object OA3xOriginalProductKey »

    OA3xOriginalProductKey
    ———————-

    C:\>
    ben … ya rien du tout !!! Comment cela se fait-il ?

    Répondre
  • pas de commentaire : il n’y a rien à dire donc !

    Répondre
  • Mieux vaut tard que jamais 🙂
    Je viens de tomber sur cet article où Florian aurait dû préciser « récupérer la clé de licence Windows installée sur votre machine OEM » – En fait depuis Windows 8, Microsoft n’appose plus de sticker sur les PC achetés avec un système pré-installé. C’est qu’on appelle une clé OEM, gracieusement offerte avec le matériel et non cessible… (OA3 pour OEM Activation 3eme génération)
    Si la propriété « OA3xOriginalProductKey » ne renvoie aucune valeur, cela indique simplement que le fabriquant n’a pas injecté de clé dans le BIOS/UEFI de votre PC (autrement dit, un PC acheté « sans OS » ).
    Les autres clés Retail, MAK ou KMS sont stockés dans le registre sous forme codée et c’est que les outils tiers tentent de récupérer. C’est pour cette raison qu’une fois le produit activée, il est conseillé de purger cette information, par exemple via « slmgr /cpky ».
    Bien à vous, chers lecteurs 🙂

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.