Verwenden des Cmdlet \"Get-Member\"

Auflisten der Eigenschaften und Methoden eines Befehls oder Objekts

Wenn Sie Skripts schreiben oder von der Befehlszeile aus arbeiten, haben Sie meist folgendes Problem: Woher weiß ich, was ich machen kann, und was nicht? Woher weiß ich, welche Eigenschaften und Methoden mir zur Verfügung stehen? Wie kann ich ein Skript schreiben oder einen Befehl in die Befehlszeile eingeben, ohne mir jedes in MSDN vorhandene Objektmodell merken zu müssen?

Eine Möglichkeit ist die Verwendung des Windows PowerShell-Cmdlet Get-Member. Nachdem Sie eine Verbindung zu einem Objekt eingerichtet haben, können Sie dieses Objekt an Get-Member weiterreichen. Get-Member wiederum listet die Eigenschaften und Methoden dieses Objekts auf. Angenommen, Sie wollen wissen, welche Eigenschaften und Methoden für Ereignisprotokolle zur Verfügung stehen. Wenn Sie wissen, dass Get-EventLog –list ein Ereignisprotokollobjekt ermittelt, brauchen Sie nur den folgenden Befehl auszuführen:

Get-EventLog -list | Get-Member

Windows PowerShell gibt Ihnen beispielsweise die folgenden Daten zurück:

Name                      MemberType Definition
----                      ---------- ----------
add_Disposed              Method     System.Void add_Disposed(EventHandler v...
add_EntryWritten          Method     System.Void add_EntryWritten(EntryWritt...
BeginInit                 Method     System.Void BeginInit()
Clear                     Method     System.Void Clear()
Close                     Method     System.Void Close()

Sie wollen die Eigenschaften der WMI-Klasse "Win32_BIOS" ermitteln? Dazu verwenden Sie den folgenden Befehl, bei dem der Parameter –membertype angegeben wird, um die zurückgegebenen Daten auf die Eigenschaften einzugrenzen:

Get-WmiObject win32_bios | Get-Member -membertype properties

Und klar, wenn Sie –membertype auf methods setzen, werden nur die Methoden zurückgegeben.

Und noch ein interessanter Verwendungszweck von Get-Member. Wussten Sie, dass einige der von dem Cmdlet Get-Process zurückgegebenen Eigenschaften Aliase haben? Sie wüssten es, wenn Sie diesen Befehl mit dem Parameter –membertype mit der Spezifikation AliasProperty aufgerufen hätten:

Get-Process | Get-Member -membertype aliasproperty

Und Sie erhalten dieses Ergebnis:

Name    MemberType    Definition
----    ----------    ----------
Handles AliasProperty Handles = Handlecount
Name    AliasProperty Name = ProcessName
NPM     AliasProperty NPM = NonpagedSystemMemorySize
PM      AliasProperty PM = PagedMemorySize
VM      AliasProperty VM = VirtualMemorySize
WS      AliasProperty WS = WorkingSet

Was bedeutet es, wenn eine Eigenschaft einen Alias hat? Es bedeutet einfach, dass Sie, wenn Sie das nächste Mal mit dem Cmdlet Get-Process arbeiten, "NPM" statt "NopagedSystemMemorySize" eingeben können. Zum Beispiel:

Get-Process | Select-Object name, npm

Darüber hinaus funktioniert Get-Member tatsächlich auch mit COM-Objekten problemlos. Wollen Sie die Eigenschaften und Methoden von "FileSystemObject" wissen? Sie brauchen nur das Cmdlet New-Object auszuführen, um eine Instanz von "FileSystemObject" zu erhalten, und können dieses Objekt dann an Get-Member weiterreichen:

New-Object -com scripting.filesystemobject | Get-Member

Sie erhalten etwa die folgenden Informationen zurück:

Name                MemberType Definition
----                ---------- ----------
BuildPath           Method     string BuildPath (string, string)
CopyFile            Method     void CopyFile (string, string, bool)
CopyFolder          Method     void CopyFolder (string, string, bool)
CreateFolder        Method     IFolder CreateFolder (string)
CreateTextFile      Method     ITextStream CreateTextFile (string, bool, bool)
DeleteFile          Method     void DeleteFile (string, bool)
DeleteFolder        Method     void DeleteFolder (string, bool)
DriveExists         Method     bool DriveExists (string)
FileExists          Method     bool FileExists (string)
FolderExists        Method     bool FolderExists (string)

Aliase für "Get-Member"

  • gm