PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Obtenir des informations sur l’OS en PowerShell

mardi 19 avril 2016 à 15:00

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.