Anzeigen einer Objektstruktur

Da Objekte eine solche zentrale Rolle in PowerShell spielen, gibt es mehrere systemeigene Befehle, die für die Arbeit mit beliebigen Objekttypen entwickelt wurden. Der wichtigste ist der Get-Member Befehl.

Die einfachste Methode zum Analysieren der Objekte, die ein Befehl zurückgibt, besteht darin, die Ausgabe dieses Befehls an das Get-Member Cmdlet weiterzuleiten. Das Get-Member-Cmdlet zeigt Ihnen den offiziellen Namen des Objekttyps und eine vollständige Auflistung seiner Elemente an. Die Anzahl der zurückgegebenen Elemente kann manchmal überwältigend sein. Ein Prozessobjekt kann z. B. über 100 Elemente haben.

Mit dem folgenden Befehl können Sie alle Elemente eines Process-Objekts und einer Seite über die Ausgabe anzeigen.

Get-Process | Get-Member | Out-Host -Paging
TypeName: System.Diagnostics.Process

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
add_Disposed                   Method         System.Void add_Disposed(Event...
...

Wir können diese lange Liste von Informationen besser nutzbar machen, indem wir nach Elementen filtern, die wir sehen möchten. Mit dem Get-Member Befehl können Sie nur Elemente auflisten, die Eigenschaften sind. Es gibt mehrere Arten von Eigenschaften. Das Cmdlet zeigt Eigenschaften eines Typs mithilfe des MemberType-Parameters mit dem Wert Propertiesan. Die resultierende Liste ist immer noch sehr lang, aber deutlich überschaubarer:

Get-Process | Get-Member -MemberType Properties
   TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount
Name                       AliasProperty  Name = ProcessName
...
ExitCode                   Property       System.Int32 ExitCode {get;}
...
Handle                     Property       System.IntPtr Handle {get;}
...
CPU                        ScriptProperty System.Object CPU {get=$this.Total...
...
Path                       ScriptProperty System.Object Path {get=$this.Main...
...

Note

Die zulässigen Werte von MemberType sind AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet und All.

Es gibt mehr als 60 Eigenschaften für einen Prozess. PowerShell bestimmt standardmäßig, wie ein Objekttyp mithilfe von Informationen angezeigt wird, die in XML-Dateien gespeichert sind, deren Namen enden .format.ps1xml. Die Formatierungsdefinition für Prozessobjekte wird in DotNetTypes.format.ps1xmlgespeichert.

Wenn Sie andere Eigenschaften als die Eigenschaften anzeigen müssen, die PowerShell standardmäßig anzeigt, können Sie die Ausgabe mithilfe der Format-* Cmdlets formatieren.