Dela via


Visa objektstruktur

Eftersom objekt spelar en så central roll i PowerShell finns det flera interna kommandon som är utformade för att fungera med godtyckliga objekttyper. Den viktigaste är Get-Member kommandot.

Den enklaste tekniken för att analysera de objekt som ett kommando returnerar är att skicka utdata från kommandot till cmdleten Get-Member . Cmdleten Get-Member visar det formella namnet på objekttypen och en fullständig lista över dess medlemmar. Antalet element som returneras kan ibland vara överväldigande. Ett processobjekt kan till exempel ha över 100 medlemmar.

Med följande kommando kan du se alla medlemmar i ett processobjekt och bläddra igenom utdata.

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

Vi kan göra den här långa listan med information mer användbar genom att filtrera efter element som vi vill se. Med Get-Member kommandot kan du bara visa en lista över medlemmar som är egenskaper. Det finns flera former av egenskaper. Cmdleten visar egenskaper för en typ med parametern MemberType med värdet Properties. Den resulterande listan är fortfarande mycket lång, men en mer hanterbar:

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

Kommentar

De tillåtna värdena för MemberType är AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet och All.

Det finns mer än 60 egenskaper för en process. Som standard bestämmer PowerShell hur en objekttyp ska visas med hjälp av information som lagras i XML-filer med namn som slutar på .format.ps1xml. Formateringsdefinitionen för processobjekt lagras i DotNetTypes.format.ps1xml.

Om du behöver titta på andra egenskaper än de som PowerShell visar som standard kan du formatera utdata med hjälp av Format-* cmdletarna.