Visualizando a estrutura do objeto

Como os objetos desempenham um papel tão central no PowerShell, há vários comandos nativos projetados para trabalhar com tipos de objetos arbitrários. O mais importante é o Get-Member comando.

A técnica mais simples para analisar os objetos que um comando retorna é canalizar a saída desse comando para o Get-Member cmdlet. O Get-Member cmdlet mostra o nome formal do tipo de objeto e uma lista completa de seus membros. O número de elementos que são retornados às vezes pode ser esmagador. Por exemplo, um objeto de processo pode ter mais de 100 membros.

O comando a seguir permite que você veja todos os membros de um objeto Process e página através da saída.

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

Podemos tornar esta longa lista de informações mais utilizável filtrando os elementos que queremos ver. O Get-Member comando permite listar apenas os membros que são propriedades. Existem várias formas de propriedades. O cmdlet exibe propriedades de um tipo usando o parâmetro MemberType com o valor Properties. A lista resultante ainda é muito longa, mas mais gerenciável:

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

Os valores permitidos de MemberType são AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet e All.

Existem mais de 60 propriedades para um processo. Por padrão, o PowerShell determina como exibir um tipo de objeto usando informações armazenadas em arquivos XML com nomes terminados em .format.ps1xml. A definição de formatação para objetos de processo é armazenada em DotNetTypes.format.ps1xml.

Se você precisar examinar propriedades diferentes daquelas que o PowerShell exibe por padrão, poderá formatar a saída usando os Format-* cmdlets.