Exibindo a estrutura do objeto
Como objetos representam um papel central no PowerShell, há vários comandos nativos projetados para trabalhar com tipos de objetos arbitrários. O mais importante é o comando Get-Member
.
A técnica mais simples para analisar os objetos que um comando retorna é direcionar a saída desse comando para o cmdlet Get-Member
. O cmdlet Get-Member
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 imenso. 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 uma página na 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 essa longa lista de informações mais utilizável com filtragem dos elementos que você deseja ver. O comando Get-Member
permite listar somente os membros que são propriedades. Há 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 fácil de gerenciar:
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...
...
Observação
Os valores permitidos para MemberType são AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet e All.
Há 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 que têm nomes que terminam com .format.ps1xml
. A definição de formatação para objetos de processo é armazenada no DotNetTypes.format.ps1xml
.
Se você precisar examinar propriedades diferentes que o PowerShell exibe por padrão, poderá formatar a saída usando os cmdlets Format-*
.