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.