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