Ver la estructura del objeto

Dado que los objetos desempeñan una función esencial en PowerShell, existen varios comandos nativos diseñados para trabajar con tipos de objetos arbitrarios. El más importante es el comando Get-Member.

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

El siguiente comando 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 fácil de usar mediante el filtrado de los elementos que quiere ver. El comando Get-Member permite mostrar solo los miembros que son propiedades. Existen varios formatos de propiedades. El cmdlet muestra las propiedades de un tipo mediante el parámetro MemberType con el valor Properties. La lista resultante todavía es muy larga, pero un poco más manejable:

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

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

Existen más de 60 propiedades para un proceso. PowerShell determina cómo mostrar un tipo de objeto mediante la información almacenada en archivos XML cuyos nombres terminan con .format.ps1xml. La definición de formato para los objetos de proceso se almacena en DotNetTypes.format.ps1xml.

Si necesita consultar propiedades distintas de las que PowerShell muestra de forma predeterminada, deberá formatear la salida mediante los cmdlets Format-*.