Visualizzazione della struttura degli oggetti

Poiché gli oggetti svolgono un ruolo così centrale in PowerShell, esistono diversi comandi nativi progettati per funzionare con tipi di oggetti arbitrari. Quello più importante è il Get-Member comando .

La tecnica più semplice per analizzare gli oggetti restituiti da un comando consiste nel inviare tramite pipe l'output di tale comando al Get-Member cmdlet. Il Get-Member cmdlet mostra il nome formale del tipo di oggetto e un elenco completo dei relativi membri. Il numero di elementi restituiti a volte può essere a volte enorme. Ad esempio, un oggetto Process può avere più di 100 membri.

Il comando seguente consente di visualizzare tutti i membri di un oggetto Process e di scorrere l'output.

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

È possibile rendere più fruibile questo lungo elenco di informazioni filtrando gli elementi da visualizzare. Il Get-Member comando consente di elencare solo i membri che sono proprietà. Esistono diversi tipi di proprietà. Il cmdlet visualizza le proprietà di un tipo usando il parametro MemberType con il valore Properties. L'elenco risultante è ancora molto lungo, ma è più gestibile:

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

Nota

I valori consentiti per MemberType sono AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet e All.

Per un processo sono disponibili più di 60 proprietà. Per impostazione predefinita, PowerShell determina come visualizzare un tipo di oggetto usando le informazioni archiviate nei file XML con nomi che terminano con .format.ps1xml. La definizione di formattazione per gli oggetti processo viene archiviata in DotNetTypes.format.ps1xml.

Se è necessario esaminare le proprietà diverse da quelle visualizzate da PowerShell per impostazione predefinita, è possibile formattare l'output usando i Format-* cmdlet.