SCRIPT : Windows Server 2008 – Lister les composants installés

Dernièrement un de mes collègues m’a demandé de récupérer la liste des composants installés sur un serveur Windows Server 2008 via un script. J’ai tout de suite pensé à utiliser Powershell et je vous fais part du (tout) petit script que j’ai écrit.

le but était donc d’avoir une liste des éléments cochés dans les fenêtres suivantes :

image

et

image

Pour écrire ce script, je me suis appuyé sur l’outil servermanagercmd.exe qui permet d’installer/desinstaller des rôles et des fonctionnalités sous Windows Sevrer 2008 mais qui permet également de dumper la configuration dans un  fichier XML (ô joie)

le plus gros du travail étant fait, voici donc le petit bout de script :

function Get-InstalledComponents {

[Environment]::GetEnvironmentVariable("TMP") | Push-Location

servermanagercmd –query serverroles.xml | out-null

$serverroles = [XML] (gc .\serverroles.xml)

$serverroles.SelectNodes("//*") | ? {$_.Installed –eq "true"}

del .\serverroles.xml

Pop-Location

}

et voila le résultat

image

Etant donné que l’on traite un fichier XML Powershell récupère des informations sur lesquelles on peut faire des traitements, comme par exemple :

récupérer la liste des Fonctionnalités installées :

Get-InstalledComponents | ? {$_.name –eq "Features"}

Récupérer la liste des rôles et services de rôles installés :

Get-InstalledComponents | ? {$_.name –like "Role*"}

Choisir les colonnes à afficher

Get-InstalledComponents | select Id, DisplayName, Name

etc.