Powershell имеет “оценку” эквивалентной? Существует ли лучший способ видеть список свойств и значений?

Я делаю немного Powershell, пишущий сценарий (впервые) для рассмотрения некоторого материала в сайте Sharepoint и что я хотел бы смочь сделать, должен пройти список свойств объекта и просто произвести их значения на "имя свойства = значение" вид формата.

Теперь я могу найти список элементов с помощью этого:

$myObject | get-member -membertype property

Который возвратит список всех свойств очень ясным и читаемым способом. Но то, в чем я нуждаюсь, должно найти значение для тех свойств.

В некоторых языках сценариев у меня могла быть своего рода оценка ("$myObject.$propertyName") вызов - где я извлек $propertyName из вывода получать-участника - и имею его, оценивают строку как код, в котором для вида быстрого-и-грязного решения я нуждаюсь, был бы прекрасен.

Это существует в Powershell или является там более удобным способом сделать это? Я должен использовать отражение вместо этого?

6
задан glenatron 17 March 2010 в 17:54
поделиться

3 ответа

Чтобы получить значение свойств объекта, вы можете использовать несколько методов.

Во-первых, вы можете использовать Select-Object и параметр -Property, чтобы указать, какие значения свойств вы хотите вернуть. То, как это будет отображаться, будет зависеть от количества указанных вами свойств и типа объекта. Если вам нужны все свойства, вы можете использовать подстановочный знак (*), чтобы получить их все.

Пример -

$myobject | Select-Object -Property name, length
$myobject | Select-Object -Property *

Вы также можете управлять форматированием выходных данных аналогичным образом, используя Format-List или Format-Table.

Пример -

$myobject | Format-List -Property *
$myobject | Format-Table -Property name, length

Наконец, чтобы выполнить вывод в стиле «eval», вы можете просто ввести

$myobject."$propertyname" 

, и значение свойства будет возвращено.

8
ответ дан 10 December 2019 в 00:36
поделиться

Для вас лучшим выбором будет Формат-Пользовательский .

get-date | Format-Custom -Depth 1 -Property * 
get-childitem . | select-object -first 1 | Format-Custom -Depth 1 -Property *

Возможно, это слишком многословно, но полезно;)


Или вы действительно можете использовать Get-Member

$obj = get-date
$obj | 
   gm -MemberType *property | 
   % { write-host ('{0,-12} = {1}' -f $_.Name, $obj.($_.Name)) }
1
ответ дан 10 December 2019 в 00:36
поделиться

Для этого я бы рекомендовал использовать Format-List -force, например:

Get-Process | Format-List * -Force

-Force необязателен, но иногда PowerShell скрывает свойства, которые я действительно хочу видеть.

1
ответ дан 10 December 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: