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.