Objectstructuur weergeven

Omdat objecten een dergelijke centrale rol spelen in PowerShell, zijn er verschillende systeemeigen opdrachten ontworpen om te werken met willekeurige objecttypen. De belangrijkste is de Get-Member opdracht.

De eenvoudigste techniek voor het analyseren van de objecten die een opdracht retourneert, is door de uitvoer van die opdracht door te geven aan de Get-Member cmdlet. De Get-Member cmdlet toont u de formele naam van het objecttype en een volledige lijst met de leden. Het aantal geretourneerde elementen kan soms overweldigend zijn. Een procesobject kan bijvoorbeeld meer dan 100 leden hebben.

Met de volgende opdracht kunt u alle leden van een procesobject en de uitvoer bekijken.

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

We kunnen deze lange lijst met informatie bruikbaarder maken door te filteren op elementen die we willen zien. Met de Get-Member opdracht kunt u alleen leden weergeven die eigenschappen zijn. Er zijn verschillende soorten eigenschappen. Met de cmdlet worden eigenschappen van een type weergegeven met behulp van de parameter MemberType met de waarde Properties. De resulterende lijst is nog steeds erg lang, maar een beter beheerbaar:

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

Notitie

De toegestane waarden van MemberType zijn AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet en All.

Er zijn meer dan 60 eigenschappen voor een proces. PowerShell bepaalt standaard hoe een objecttype wordt weergegeven met behulp van gegevens die zijn opgeslagen in XML-bestanden met namen die eindigen op .format.ps1xml. De opmaakdefinitie voor procesobjecten wordt opgeslagen in DotNetTypes.format.ps1xml.

Als u andere eigenschappen wilt bekijken dan de eigenschappen die powerShell standaard weergeeft, kunt u de uitvoer opmaken met behulp van de Format-* cmdlets.