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

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

Para ver todos los miembros de un objeto Process y dividir el resultado en páginas para poder verlo todo, escriba:

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

El resultado de este comando será similar al siguiente:

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

Puede hacer que esta larga lista de información sea más útil si la filtra por los elementos que desea ver. El comando Get-Member permite crear una lista que solamente contenga los miembros que son propiedades. Hay varios tipos de propiedades. El cmdlet muestra las propiedades de cualquier tipo si establecemos Properties como valor del parámetro Get-Member MemberType. La lista resultante sigue siendo muy larga, pero un poco más manejable:

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

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 para un proceso. El motivo por el que Windows PowerShell suele mostrar únicamente un subconjunto de las propiedades de cualquier objeto conocido es que, si los mostrara todos, el resultado sería una cantidad de información muy difícil de manejar.

Nota:

Windows PowerShell determina cómo se va a mostrar un tipo de objeto utilizando la información almacenada en archivos XML con nombres que finalizan en .format.ps1xml. Los datos de formato correspondientes a objetos de proceso, que son objetos .NET de la clase System.Diagnostics.Process, se almacenan en PowerShellCore.format.ps1xml.

Si necesita examinar propiedades distintas de las que Windows PowerShell muestra de manera predeterminada, deberá dar formato a los datos de salida usted mismo. Para ello, puede utilizar los cmdlets de formato.




Tabla de contenido