Как перечислить все свойства объекта PowerShell

121

Когда я смотрю на класс Win32_ComputerSystem , он показывает множество свойств, таких как Status, PowerManagementCapabilitiesи т. Д. Однако, когда в PowerShell я делаю следующее, я получаю только пару:

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

Как я могу увидеть все свойства?

lara400
источник

Ответы:

139

Попробуй это:

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

Для определенных объектов PowerShell предоставляет набор инструкций по форматированию, которые могут влиять на форматы таблиц или списков. Обычно они предназначены для ограничения отображения множества свойств до только основных свойств. Однако бывают случаи, когда очень хочется все увидеть. В тех случаях Format-List *будут показаны все свойства. Обратите внимание, что в случае, когда вы пытаетесь просмотреть запись об ошибке PowerShell, вам необходимо использовать «Format-List * -Force», чтобы действительно увидеть всю информацию об ошибке, например,

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

Обратите внимание, что подстановочный знак можно использовать как традиционный символ:

Get-WmiObject -Class "Win32_computersystem" | Format-List M*
Кейт Хилл
источник
1
Я предпочитаю Get-WmiObject -Class win32_computersystem -Property *. Это коротко и мило
Каньон Колоб
38

Если вы хотите узнать, какие есть свойства (и методы):

Get-WmiObject -Class "Win32_computersystem" | Get-Member
manojlds
источник
6
Я не собираюсь ставить вам отметку из-за формулировки исходного вопроса. Но стоит отметить, что Get-Member не перечисляет свойства и их значения, а только имена и типы свойств / методов.
rob
1
Это очень полезно при написании сценариев, чтобы узнать тип данных, содержащихся в каждом поле, и перечислить все доступные имена полей без извлечения данных. Спасибо!
Яник Жируар
30

Вы также можете использовать:

Get-WmiObject -Class "Win32_computersystem" | Select *

Это покажет тот же результат, что и Format-List *, используемый в других ответах здесь.

Rikels
источник
4
Это на самом деле лучше, чем метод в принятом ответе, поскольку при использовании этого метода у вас все еще есть богатые объекты, тогда как использование Format-Listуничтожит все объекты в конвейере.
Джесси Уэстлейк
7

мне нравиться

 Get-WmiObject Win32_computersystem | format-custom *

Кажется, это все расширяет.

В модуле PowerShellCookbook также есть команда show-object, которая делает это в графическом интерфейсе. Джеффри Сновер, создатель PowerShell, использует его в своих отключенных от сети видео (рекомендуется).

Хотя чаще всего использую

Get-WmiObject Win32_computersystem | fl *

Он избегает файла .format.ps1xml, который определяет представление таблицы или списка для типа объекта, если таковые имеются. Файл формата может даже определять заголовки столбцов, которые не соответствуют никаким именам свойств.

js2010
источник
4
format-custom *кажется ответ, который действительно показывает все
Крис Ф. Кэрролл
4

Самый лаконичный способ сделать это:

Get-WmiObject -Class win32_computersystem -Property *
Каньон Колоб
источник
1
Возможно, кратко, но неполно. Здесь перечислены только первоначально видимые (5) свойств по сравнению с 83, которые появляются при использовании: Get-WmiObject -Class "Win32_computersystem" | Select *
boB