Get-WmiObject ist das wichtigste Cmdlet für allgemeine Systemverwaltungsaufgaben. Alle wichtigen Subsystemeinstellungen werden über WMI verfügbar gemacht. Ferner werden Daten von WMI als Objekte in Auflistungen mit mindestens einem Element behandelt. Da Windows PowerShell auch Objekte verwendet und über eine Pipeline verfügt, um einzelne oder mehrere Objekte auf die gleiche Weise zu behandeln, können mit einem allgemeinen WMI-Zugriff problemlos verschiedene komplexe Aufgaben durchgeführt werden.
Die folgenden Beispiele veranschaulichen das Erfassen bestimmter Informationen durch Verwenden von Get-WmiObject für einen beliebigen Computer. Der ComputerName-Parameter wird mit dem Punkt im Wert (.) angegeben, dieser stellt den lokalen Computer dar. Sie können einen Namen oder eine IP-Adresse angeben, die mit einem beliebigen, über WMI erreichbaren Computer verknüpft ist. Um Informationen über den lokalen Computer abzurufen, können Sie -ComputerName. auslassen.
Auflisten der Desktopeinstellungen
Mit dem folgenden Befehl können Sie Informationen über jeden Desktop auf dem lokalen Computer sammeln.
Get-WmiObject -Class Win32_Desktop -ComputerName .
Mit diesem Befehl werden Informationen über jeden Desktop zurückgegeben, unabhängig davon, ob dieser verwendet wird.
Hinweis: | |
Die von WMI-Klassen zurückgegebenen Informationen können zahlreiche Details einschließlich Metadaten über die WMI-Klasse enthalten. Da die Namen der meisten Metadateneigenschaften mit einem doppelten Unterstrich beginnen, können Sie die Eigenschaften mit Select-Object filtern. Geben Sie nur die Eigenschaften an, die mit einem alphanumerischen Zeichen beginnen, indem Sie als Eigenschaftenwert [a-z]* angeben. Beispiel: |
Get-WmiObject -Class Win32_Desktop -ComputerName . | Select-Object -Property [a-z]*
Zum Filtern der Metadaten senden Sie die Ergebnisse des Befehls "Get-WmiObject" mit dem Pipelineoperator (|) an Select-Object -Property [a-z]*.
Auflisten von BIOS-Informationen
Mit der Win32_BIOS-WMI-Klasse werden relativ kompakte und vollständige Informationen über das System-BIOS auf dem lokalen Computer zurückgegeben.
Get-WmiObject -Class Win32_BIOS -ComputerName .
Auflisten von Prozessorinformationen
Mit der Win32_Processor-WMI-Klasse können Sie allgemeine Informationen zum Prozessor abrufen. Es empfiehlt sich jedoch, diese Informationen zu filtern:
Get-WmiObject -Class Win32_Processor -ComputerName . | Select-Object -Property [a-z]*
Um eine allgemeine Beschreibungszeichenfolge für die Prozessorfamilie anzuzeigen, können Sie einfach die SystemType-Eigenschaft von Win32_ComputerSystem zurückgeben:
PS> Get-WmiObject -Class Win32_ComputerSystem -ComputerName . | Select-Object -Property SystemType SystemType ---------- X86-based PC
Auflisten von Computerhersteller und Modell
Informationen zum Computermodell können auch mit Win32_ComputerSystem abgerufen werden. Für die Standardausgabe ist kein Filter zur Anzeige der OEM-Daten erforderlich:
PS> Get-WmiObject -Class Win32_ComputerSystem Domain : WORKGROUP Manufacturer : Compaq Presario 06 Model : DA243A-ABA 6415cl NA910 Name : MyPC PrimaryOwnerName : Jane Doe TotalPhysicalMemory : 804765696
Die Qualität der Ausgabe solcher Befehle, mit denen Informationen direkt von der Hardware zurückgegeben werden, wird durch die verfügbaren Daten bestimmt. Einige Informationen werden von Hardwareherstellern nicht korrekt konfiguriert und können daher möglicherweise nicht abgerufen werden.
Auflisten installierter Hotfixes
Mit Win32_QuickFixEngineering können Sie alle installierten Hotfixes auflisten:
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
Diese Klasse gibt die folgende Hotfixliste zurück:
Description : Update for Windows XP (KB910437) FixComments : Update HotFixID : KB910437 Install Date : InstalledBy : Administrator InstalledOn : 12/16/2005 Name : ServicePackInEffect : SP3 Status :
Um eine kompaktere Ausgabe zu erreichen, können Sie einige Eigenschaften ausschließen. Mit dem Get-WmiObject Property-Parameter können Sie zwar nur die HotFixID auswählen, es werden aber dennoch mehr Informationen ausgegeben, da standardmäßig alle Metadaten angezeigt werden:
PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property HotFixId HotFixID : KB910437 __GENUS : 2 __CLASS : Win32_QuickFixEngineering __SUPERCLASS : __DYNASTY : __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH :
Die zusätzlichen Daten werden zurückgegeben, da durch den Property-Parameter in Get-WmiObject die von den Instanzen der WMI-Klasse zurückgegeben Eigenschaften statt des an Windows PowerShell zurückgegebenen Objekts eingeschränkt werden. Zum Verkleinern der Ausgabe verwenden Sie Select-Object:
PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property Hot FixId | Select-Object -Property HotFixId HotFixId -------- KB910437
Auflisten von Informationen über die Betriebssystemversion
Die Eigenschaften der Win32_OperatingSystem-Klasse schließen Sie Informationen zur Version und zum Service Pack ein. Sie können eine dieser Eigenschaften explizit auswählen, um von Win32_OperatingSystem eine Zusammenfassung der Versionsinformationen abzurufen:
Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion
Mit dem Parameter Select-Object Property können Sie auch Platzhalter verwenden. Da in diesem Zusammenhang alle Eigenschaften verwendet werden müssen, die mit Build oder ServicePack beginnen, kann folgende Kurzform benutzt werden:
PS> Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property Build*,OSType,ServicePack* BuildNumber : 2600 BuildType : Uniprocessor Free OSType : 18 ServicePackMajorVersion : 2 ServicePackMinorVersion : 0
Auflisten von lokalen Benutzern und Besitzern
Allgemeine Informationen zu lokalen Benutzern, z. B. die Anzahl der lizenzierten Benutzer, die aktuelle Anzahl der Benutzer und der Name des Besitzers, können durch Auswahl der Win32_OperatingSystem-Eigenschaften angezeigt werden. Sie können die Eigenschaften explizit auswählen, um folgende Anzeige zu erhalten:
Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser
Nachfolgend finden Sie eine kompaktere Darstellung mit Platzhaltern:
Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property *user*
Abrufen von verfügbarem Speicherplatz
Mit der Win32_LogicalDisk-WMI-Klasse können Sie den verfügbaren Speicherplatz sowie den freien Speicherplatz für die lokalen Laufwerke anzeigen. Sie können die Anzeige auf Laufwerke mit DriveType 3 einschränken, da dieser Wert von WMI für Festplatten vergeben wird.
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . DeviceID : C: DriveType : 3 ProviderName : FreeSpace : 65541357568 Size : 203912880128 VolumeName : Local Disk DeviceID : Q: DriveType : 3 ProviderName : FreeSpace : 44298250240 Size : 122934034432 VolumeName : New Volume PS> Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum
Abrufen von Informationen über die Anmeldesitzung
Mit der Win32_LogonSession-WMI-Klasse können Sie allgemeine Informationen zu Anmeldesitzungen für Benutzer abrufen:
Get-WmiObject -Class Win32_LogonSession -ComputerName .
Anmelden von Benutzern an einem Computer
Mit Win32_ComputerSystem können Sie den Benutzer anzeigen, der an einem bestimmten Computersystem angemeldet ist. Mit diesem Befehl werden nur Informationen über den am Systemdesktop angemeldeten Benutzer zurückgegeben:
Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
Abrufen der Ortszeit von einem Computer
Mit der Win32_LocalTime-WMI-Klasse können Sie Informationen zur aktuellen Ortszeit für einen bestimmten Computer abrufen. Da mit dieser Klasse standardmäßig alle Metadaten angezeigt werden, sollten Sie Select-Object als Filter verwenden:
PS> Get-WmiObject -Class Win32_LocalTime -ComputerName . | Select-Object -Property [a-z]* Day : 15 DayOfWeek : 4 Hour : 12 Milliseconds : Minute : 11 Month : 6 Quarter : 2 Second : 52 WeekInMonth : 3 Year : 2006
Anzeigen des Dienststatus
Zum Anzeigen des Status für alle Dienste auf einem bestimmten Computer können Sie, wie bereits beschrieben, das Cmdlet Get-Service auf lokaler Ebene verwenden. Bei Remotesystemen können Sie die Win32_Service-WMI-Klasse verwenden. Wenn Sie die Ergebnisse für Status, Name und DisplayName auch mit Select-Object filtern, ist das Ausgabeformat mit dem von Get-Service fast identisch:
Get-WmiObject -Class Win32_Service -ComputerName . | Select-Object -Property Status,Name,DisplayName
Wenn Sie die vollständige Anzeige von Namen für selten verwendete Dienste mit extrem langen Namen ermöglichen möchten, können Sie Format-Table mit dem AutoSize-Parameter und dem Wrap-Parameter verwenden, um die Spaltenbreite zu optimieren und lange Namen zu umbrechen, anstatt sie abzuschneiden:
Get-WmiObject -Class Win32_Service -ComputerName . | Format-Table -Property Status,Name,DisplayName -AutoSize -Wrap