Si vous voulez faire un inventaire de votre parc, il est possible d'approcher la question à l'aide de notre cher "coquillage puissant" ! :)

Voici un script qui permet d'exporter l'ensemble des informations d'un poste Windows (RAM, OS, espaces des disques et volumétrie totale, utilisateur...), ces informations sont ensuite ajoutées dans un fichier CSV sous forme de tableau.

La première partie du script va exporter les programmes installés sur le poste et déposer les informations dans un nouveau dossier nommé avec le nom du poste.

Vous pouvez par exemple le déployer par GPO et indiquer un chemin d'accès partagé dans l'étape d'export CSV, dans mon cas de figure je l'export vers une clef USB :

## Export vers clef USB / récuparation de la lettre du volume
$letter = Get-WMIObject Win32_Volume | ?{$_.capacity -eq "31032602624"} |select -expandproperty driveletter
 
## Export des programmes installés
$name = hostname
Set-Location "$letter\Export\"
New-Item -Name "$Name" -ItemType directory
Get-WmiObject -Class Win32_Product | Select-Object -Property Name $letter\export\$name\$name.txt
 
### Récupération des informations hardwares
$computerSystem = Get-CimInstance CIM_ComputerSystem
$computerOS = get-wmiobject Win32_OperatingSystem
$Name = Get-CimInstance CIM_ComputerSystem | Select -expandproperty Name
$computerCPU = Get-CimInstance CIM_Processor | Select -expandproperty Name
$computerHDD = Get-CimInstance Win32_LogicalDisk -Filter "DeviceID = 'C:'" 
$constructeur = Get-CimInstance CIM_ComputerSystem | select -expandproperty Manufacturer
$disksizefree = "HDD Space: " + "{0:P2}" -f ($computerHDD.FreeSpace/$computerHDD.Size) + " Free (" + "{0:N2}" -f ($computerHDD.FreeSpace/1GB) + "GB)"
$disksize = "HDD Capacity: " + "{0:N2}" -f ($computerHDD.Size/1GB) + "GB"
$RAM = "RAM: " + "{0:N2}" -f ($computerSystem.TotalPhysicalMemory/1GB) + "GB"
$systeme = "User logged In: " + $computerSystem.UserName
$OS = "Operating System: " + $computerOS.caption + ", Service Pack: " + $computerOS.ServicePackMajorVersion
 
###Inscriptions des informations dans un tableau
$table=@"
Name;OS;CPU;Constructeur;HDD Size;HDD Free space;RAM;Utilisateur
$Name;$OS;$CPU;$constructeur;$disksize;$disksizefree;$RAM;$systeme
"@
 
#Export to a csv file
$table | Set-Content $letter\Export\$name\$name.csv