Como os objetos representam uma função central no Windows PowerShell, há vários comandos nativos projetados para trabalhar com tipos de objetos arbitrários. O mais importante deles é o comando Get-Member .

A técnica mais simples de análise dos objetos retornados por um comando é enviar a saída do comando pelo pipeline para o cmdlet Get-Member . O cmdlet Get-Member mostra o nome formal do tipo de objeto e uma listagem completa de seus membros. O número de elementos retornado algumas vezes pode ser assombroso. Por exemplo, um objeto de processo pode ter mais de 100 membros.

Para ver todos os membros de um objeto Process e paginar a saída para que tudo seja exibido, digite:

PS> Get-Process | Get-Member | Out-Host -Paging

A saída desse comando será algo parecido com isto:

   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 se filtrarmos os elementos que desejamos ver. O comando Get-Member permite que você liste somente os membros que são propriedades. Há várias formas de propriedades. O cmdlet exibirá propriedades de qualquer tipo se definirmos o parâmetro Get-Member MemberType como valor de Properties. A lista resultante ainda é muito extensa, mas um pouco mais gerenciável:

PS> 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 de 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. O Windows PowerShell muitas vezes exibe apenas algumas propriedades para qualquer objeto bem conhecido porque mostrar todas elas produziria uma quantidade não gerenciável de informações.

Observação:

O Windows PowerShell determina como exibir um tipo de objeto usando as informações armazenadas em arquivos XML que têm nomes terminados em .format.ps1xml. Os dados de formatação de objetos de processo, que são objetos System.Diagnostics.Process do .NET, são armazenados em PowerShellCore.format.ps1xml.

Se você precisar consultar propriedades diferentes daquelas exibidas pelo Windows PowerShell por padrão, terá de formatar os dados de saída por conta própria. Isso pode ser feito com a ajuda dos cmdlets de formatação.




Sumário