Mit dem cmdlet Get-WmiObject kann Windows PowerShell auf WMI Objekte zugreifen. Man kann also z.B. die Eigenschaften der Klasse “Win32_OperatingSystem” anzeigen und daraus Informationen über das Betriebssystem erhalten.
Die vollständige Liste der Eigenschaften (und Methoden) gibt es im MSDN. Oder natürlich mit folgendem Befehl:
Get-WmiObject -Class win32_OperatingSystem -Property * | select *
Interessante Eigenschaften
OperatingSystemSKU: Enthält die installierte Version des Betriebssystems, z.B. Ultimate, Enterprise, Datacenter Server Edition
ProductType: Workstation, Domain Controller, Server
BuildNumber: Enthält die Build Nummer des Betriebssystems
OSArchitecture: 32-Bit oder 64-Bit
Filter
Man kann aufgrund dieser Eigenschaften einfache Filter für Scripts erstellen und so z.B. sicherstellen dass ein bestimmtes Script nur auf einem bestimmten Betriebssystem ausgeführt wird.
$OS = Get-WMIObject –Class Win32_OperatingSystem if($OS.OperatingSystemSKU -eq "4" -and $OS.Caption -like "*Windows 7*") { #Code für Windows 7 Enterprise } else { #Code für jedes andere OS } if ($os.OSArchitecture -eq "64-bit"){ #Code für x64 } else { #Code für x86 }</code> Das sind natürlich sehr einfache Beispiele, wie mächtig WMI ist kann man sich am besten in der WMI Reference ansehen. Außerdem enthält das Beispiel keine Fehlerüberprüfung, läuft irgendwas schief, wars das. Natürlich kann man auch Informationen über einen oder mehrere remote Computer auswerten. Das cmdlet Get-WmiObject hat den Parameter Computername über den man einen oder mehrere Computernamen (getrennt mit Komma) abfragen kann. Über Pipline Input kann man dem cmdlet Computernamen aus einem Textfile oder dem ActiveDirectory übergeben. Get-ADComputer -Filter 'Name -like "*Server*"'| Get-WmiObject –Class win32_OperatingSystem</code> so long, tom#Variable OS erstellen, enthält alle Informationen der angegebenen Klasse</p>
Remote
Get-WmiObject –Class win32_OperatingSystem –Computer mypc1,mypc2</p>