Como listar todas as propriedades de um objeto do PowerShell

121

Quando eu olhar para a classe Win32_ComputerSystem , ele mostra um monte de imóveis como Status, PowerManagementCapabilities, etc. No entanto, quando em PowerShell eu faço o abaixo eu só voltar um casal:

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

Como posso ver todas as propriedades?

lara400
fonte

Respostas:

139

Tente o seguinte:

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

Para determinados objetos, o PowerShell fornece um conjunto de instruções de formatação que podem afetar os formatos de tabela ou lista. Isso geralmente significa limitar a exibição de resmas de propriedades apenas às propriedades essenciais. No entanto, há momentos em que você realmente deseja ver tudo. Nesses casos Format-List *, mostrará todas as propriedades. Observe que, no caso em que você está tentando exibir um registro de erro do PowerShell, é necessário usar "Format-List * -Force" para ver realmente todas as informações de erro, por exemplo,

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

Observe que o curinga pode ser usado como um wilcard tradicional:

Get-WmiObject -Class "Win32_computersystem" | Format-List M*
Keith Hill
fonte
1
Eu prefiro Get-WmiObject -Class win32_computersystem -Property *. É curto e doce #
Kolob Canyon
38

Se você deseja saber quais propriedades (e métodos) existem:

Get-WmiObject -Class "Win32_computersystem" | Get-Member
manojlds
fonte
6
Não vou marcar você por causa da redação da pergunta original. Mas vale ressaltar que Get-Member não lista as propriedades e seus valores apenas os nomes e tipos de propriedades / métodos.
rob
1
Isso é muito útil ao criar scripts para saber o tipo de dados que cada campo contém e para listar todos os nomes de campos disponíveis sem buscar dados. Obrigado!
Yanick Girouard
30

Você também pode usar:

Get-WmiObject -Class "Win32_computersystem" | Select *

Isso mostrará o mesmo resultado que a Format-List * usada nas outras respostas aqui.

Rikels
fonte
4
Na verdade, isso é melhor do que o método da resposta aceita, pois, ao usar esse método, você ainda possui objetos ricos, enquanto o uso Format-Listdestrói todos os objetos no pipeline.
Jessie Westlake
7

Eu gosto

 Get-WmiObject Win32_computersystem | format-custom *

Isso parece expandir tudo.

Há também um comando show-object no módulo PowerShellCookbook que faz isso em uma GUI. Jeffrey Snover, o criador do PowerShell, usa-o em seus vídeos desconectados (recomendado).

Embora na maioria das vezes eu uso

Get-WmiObject Win32_computersystem | fl *

Evita o arquivo .format.ps1xml que define uma tabela ou exibição de lista para o tipo de objeto, se houver algum. O arquivo de formato pode até definir cabeçalhos de coluna que não correspondem a nenhum nome de propriedade.

js2010
fonte
4
format-custom *Parece que a resposta que realmente mostra tudo
Chris F Carroll
4

A maneira mais sucinta de fazer isso é:

Get-WmiObject -Class win32_computersystem -Property *
Kolob Canyon
fonte
1
Sucinto, talvez, mas incompleto. Isso lista apenas as propriedades vistas originalmente (5) versus as 83 que aparecem ao usar: Get-WmiObject -Class "Win32_computersystem" | Selecione *
boB