Detectar objetos

Completado

Cuando se ejecuta un cmdlet, devuelve un objeto. Cuando invoca un cmdlet, la respuesta que ve ya tiene formato y es posible que no represente necesariamente toda la información disponible para la respuesta. Si desea obtener más información sobre la respuesta que se devuelve y cómo modificarla, puede usar el comando Get-Member.

Descubrimiento de objetos mediante Get-Member

El cmdlet Get-Member está diseñado para canalizarse sobre el comando que se ejecuta, de modo que pueda filtrar la salida. Una invocación de línea de comandos típica de Get-Member puede ser similar al ejemplo siguiente:

Get-Process -Name 'name-of-process' | Get-Member

Este comando primero genera un resultado de objeto mediante la llamada a Get-Process. Ese resultado se pasa como una entrada a Get-Member mediante la barra vertical (|). A cambio, se obtiene un resultado de tabla que incluye las columnas Name, MemberType y Definition. También se obtiene el tipo del objeto devuelto.

Sugerencia

Para obtener una lista de los procesos que se ejecutan en el equipo, ejecute Get-Process.

Búsqueda por nombre

La primera línea de la respuesta, al ejecutar el comando Get-Member, es el tipo del objeto devuelto. Cuando se conoce el tipo, se pueden buscar otros cmdlets que operen en el mismo tipo. Explore estos comandos relacionados para aumentar los conocimientos sobre el dominio en el que trabaje.

Imagine que ha invocado el comando de PowerShell que enumera todos los miembros de un proceso concreto. Las primeras filas del resultado tienen un aspecto similar al siguiente:

  TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount

La primera fila indica que el tipo es System.Diagnostics.Process. Use este tipo como argumento de búsqueda para buscar otros cmdlets que utilicen este tipo. Este es un comando de ejemplo:

Get-Command -ParameterType Process

El resultado es una lista de los cmdlets que operan en este tipo. Progresivamente, podrá obtener más información sobre PowerShell mediante Get-Member y aprendiendo a interpretar su resultado.

Sugerencia

PowerShell está diseñado para que se aprenda progresivamente. Una excelente manera de descubrir cmdlets relacionados consiste en usar el tipo devuelto para buscar cmdlets por tipo.

Filtrado de un resultado de Get-Member mediante Select-Object

Al ejecutar Get-Member, el resultado es detallado. Es decir, se devuelven muchas filas. Es posible que el objeto tenga propiedades como eventos y métodos. Para que la respuesta sea menos detallada, puede filtrar por columnas concretas y decidir también qué columnas se van a mostrar. Tenga en cuenta que la respuesta devuelta ya es un subconjunto de todas las columnas de la respuesta.

Examine una respuesta Get-Member que incluye muchas columnas. Mediante la introducción del cmdlet Select-Object, puede elegir qué columnas aparecen en la respuesta. El comando espera una lista separada por comas de nombres de columna o un carácter comodín, como un asterisco (*), que indica todas las columnas.

Cuando se usa el comando Select-Object en el contexto de Select-Object Name, MemberType, solo se especifican las columnas deseadas. En este caso, las columnas son Name y MemberType. La línea de comandos sería algo parecido a esto:

Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType

Este patrón de filtrado devuelve una salida que incluye menos columnas. Este es un ejemplo del resultado:

Name                           MemberType
----                           ----------
Handles                     AliasProperty

También puede filtrar la respuesta por filas. Por ejemplo, puede usar la marca -MemberType Method para especificar que está interesado en las filas en las que el tipo de miembro es un método. Es posible que solo quiera mostrar filas concretas, por ejemplo, si quiere localizar un método específico y ejecutarlo.

Sugerencia

Por lo general, es mejor usar cmdlets dedicados que ejecutar métodos en un objeto.