Anzeigen einer Objektstruktur

Weil Objekte in PowerShell eine so zentrale Rolle spielen, gibt es mehrere native Befehle, die zum Arbeiten mit beliebigen Objekttypen vorgesehen sind. Der wichtigste dieser Befehle ist der Befehl Get-Member.

Die einfachste Methode zum Analysieren der Objekte, die von einem Befehl zurückgegeben werden, besteht darin, die Ausgabe dieses Befehls an das Cmdlet Get-Member weiterzuleiten. Das Cmdlet Get-Member zeigt den formalen Objekttypnamen sowie eine vollständige Liste der Member des Objekts an. Die Anzahl von zurückgegebenen Elementen kann manchmal überwältigend sein. Beispielsweise kann ein Prozessobjekt mehr als 100 Member haben.

Mit dem folgenden Befehl können Sie alle Member 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...
...

Diese lange Liste von Informationen lässt sich nutzbarer machen, indem Sie nach den jeweils gewünschten Elementen filtern. Der Befehl Get-Member ermöglicht es Ihnen, nur Member aufzulisten, die Eigenschaften sind. Es gibt mehrere Typen von Eigenschaften. Das Cmdlet zeigt Eigenschaften eines Typs mithilfe des MemberType-Parameters mit dem Wert Properties an. Die Ergebnisliste ist immer noch sehr lang, aber besser zu handhaben:

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...
...

Hinweis

„MemberType“ hat die folgenden zulässigen Werte: 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. Standardmäßig bestimmt PowerShell anhand der Informationen, die in XML-Dateien gespeichert sind, deren Namen mit .format.ps1xml enden, wie ein Objekttyp angezeigt werden soll. Die Formatierungsdefinition für Prozessobjekte wird in DotNetTypes.format.ps1xml gespeichert.

Wenn Sie Eigenschaften anzeigen müssen, die nicht standardmäßig von PowerShell angezeigt werden, können Sie die Ausgabe mit den Format-*-Cmdlets formatieren.