Cómo enumerar todas las propiedades de un objeto de PowerShell


121

Cuando miro la clase Win32_ComputerSystem , muestra un montón de propiedades como Status, PowerManagementCapabilitiesetc. Sin embargo, cuando estoy en PowerShell hago lo siguiente, solo obtengo un par:

PS C:\Windows\System32\drivers> Get-WmiObject -Class "Win32_computersystem"

Domain              : YYY.com
Manufacturer        : VMware, Inc.
Model               : VMware Virtual Platform
Name                : LONINEGFQEF58
PrimaryOwnerName    : Authorised User
TotalPhysicalMemory : 2147016704

¿Cómo puedo ver todas las propiedades?

Respuestas:


139

Prueba esto:

Get-WmiObject -Class "Win32_computersystem" | Format-List *
Get-WmiObject -Class "Win32_computersystem" | Format-List -Property *

Para ciertos objetos, PowerShell proporciona un conjunto de instrucciones de formato que pueden afectar los formatos de tabla o lista. Por lo general, están destinados a limitar la visualización de una gran cantidad de propiedades a solo las propiedades esenciales. Sin embargo, hay momentos en los que realmente quieres verlo todo. En esos casos Format-List *se mostrarán todas las propiedades. Tenga en cuenta que en el caso de que esté intentando ver un registro de error de PowerShell, debe usar "Format-List * -Force" para ver realmente toda la información de error, por ejemplo,

$error[0] | Format-List * -force

Tenga en cuenta que el comodín se puede utilizar como un wilcard tradicional:

Get-WmiObject -Class "Win32_computersystem" | Format-List M*

1
Yo prefiero Get-WmiObject -Class win32_computersystem -Property *. Es corto y dulce
Kolob Canyon

38

Si quieres saber qué propiedades (y métodos) existen:

Get-WmiObject -Class "Win32_computersystem" | Get-Member

6
No lo voy a tachar debido a la redacción de la pregunta original. Pero vale la pena señalar que Get-Member no enumera las propiedades y sus valores, solo los nombres y tipos de propiedades / métodos.
robar el

1
Esto es muy útil cuando se crea un script para conocer el tipo de datos que contiene cada campo y para enumerar todos los nombres de campo disponibles sin obtener datos. ¡Gracias!
Yanick Girouard

30

También puedes usar:

Get-WmiObject -Class "Win32_computersystem" | Select *

Esto mostrará el mismo resultado que Format-List * usado en las otras respuestas aquí.


4
En realidad, esto es mejor que el método en la respuesta aceptada, ya que al usar este método todavía tiene objetos ricos, mientras que usar Format-Listdestruirá todos los objetos en el proceso.
Jessie Westlake

7

me gusta

 Get-WmiObject Win32_computersystem | format-custom *

Eso parece expandirlo todo.

También hay un comando show-object en el módulo PowerShellCookbook que lo hace en una GUI. Jeffrey Snover, el creador de PowerShell, lo usa en sus videos desconectados (recomendado).

Aunque la mayoría de las veces uso

Get-WmiObject Win32_computersystem | fl *

Evita el archivo .format.ps1xml que define una tabla o vista de lista para el tipo de objeto, si hay alguno. El archivo de formato puede incluso definir encabezados de columna que no coinciden con ningún nombre de propiedad.


4
format-custom *parece la respuesta que realmente lo muestra todo
Chris F Carroll

4

La forma más sucinta de hacer esto es:

Get-WmiObject -Class win32_computersystem -Property *

1
Quizás sucinto, pero incompleto. Esto solo enumera las propiedades (5) vistas originalmente frente a las 83 que aparecen cuando se usa: Get-WmiObject -Class "Win32_computersystem" | Seleccionar *
boB
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.