Ver la estructura del objeto

Dado que los objetos desempeñan un papel central en PowerShell, hay varios comandos nativos diseñados para trabajar con tipos de objetos arbitrarios. La más importante es el Get-Member comando .

La técnica más sencilla para analizar los objetos que devuelve un comando es canalizar la salida de ese comando al Get-Member cmdlet. El Get-Member cmdlet muestra el nombre formal del tipo de objeto y una lista completa de sus miembros. El número de elementos que se devuelven a veces puede ser abrumador. Por ejemplo, un objeto de proceso puede tener más de 100 miembros.

El siguiente comando le permite ver todos los miembros de un objeto Process y una página a través de la salida.

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 hacer que esta larga lista de información sea más utilizable filtrando los elementos que queremos ver. El Get-Member comando le permite enumerar solo los miembros que son propiedades. Hay varios tipos de propiedades. El cmdlet muestra las propiedades de un tipo mediante el parámetro MemberType con el valor Properties. La lista resultante sigue siendo muy larga, pero es más fácil de administrar:

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

Note

Los valores permitidos de MemberType son AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet y All.

Hay más de 60 propiedades de un proceso. De forma predeterminada, PowerShell determina cómo mostrar un tipo de objeto mediante información almacenada en archivos XML que tienen nombres que terminan en .format.ps1xml. La definición de formato para los objetos de proceso se almacena en DotNetTypes.format.ps1xml.

Si necesita examinar propiedades distintas de las que muestra PowerShell de forma predeterminada, puede dar formato a la salida mediante los Format-* cmdlets.