В Powershell, в чем разница между -Property и -ExpandProperty?

844
Laura

При запуске командлетов выходные данные немного отличаются, и я просто пытаюсь понять разницу между двумя командлетами и почему вы должны использовать один над другим.

Пример:

Get-Date | Select -Property DayOfWeek 

Выход:

DayOfWeek --------- Saturday 


Get-Date | Select -ExpandProperty DayOfWeek  Saturday 
2
Спасибо за помощь. Я пробовал несколько поисков, формулируя их несколькими различными способами, пытаясь получить какую-либо информацию об этих командах, и я не мог ничего найти. Вы только что дали мне целый источник информации для будущих вопросов, которые у меня могут возникнуть, так что еще раз, спасибо! Я благодарен: D Laura 5 лет назад 0

1 ответ на вопрос

2
maoizm

вступление

Вы можете проверить любой объект в Powershell, передав его в командлет Format-List :

PS> Get-Date | Format-List  DisplayHint : DateTime Date : 2018-10-21 0:00:00 Day : 21 DayOfWeek : Sunday DayOfYear : 294 Hour : 18 Kind : Local Millisecond : 28 Minute : 38 Month : 10 Second : 36 Ticks : 636757439160281486 TimeOfDay : 18:38:36.0281486 Year : 2018 DateTime : 21 жовтня 2018 р. 18:38:36 

Затем вы можете изменить объект, например. создать новый объект с подмножеством свойств исходного объекта. Вы делаете это с помощью командлета Select-Object и со списком обязательных свойств в -Propertyпараметре.

Select-Objectимеет псевдоним по умолчанию Select, но я предлагаю, чтобы во время изучения Powershell и обмена вашим кодом с внешними сторонами, например. Superuser.com вы не используете псевдонимы, а только полные имена командлетов для ясности

Ответ

  • Get-Date | Select-Object -Property DayOfWeekсоздаст объект, который имеет только одно свойство DayOfWeekобъекта, возвращаемого Get-Date

  • Get-Date | Select-Object -ExpandProperty DayOfWeekвозвращает строку с содержанием в DayOfWeekсобственности

Эти два параметра `select` объяснены более подробно здесь https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-6 Pimp Juice IT 5 лет назад 1
@PimpJuiceIT спасибо, это тоже будет полезно. Глядя на этот вопрос, я вспомнил, что такие «очевидные» вещи, как различие между ситуациями, когда команда возвращает строку с чем-то, и возвращением объекта, выглядящего одинаково, не описаны в учебниках, и мне пришлось пройти очень неинтуитивную кривую обучения, пока все прийти на свои места. maoizm 5 лет назад 1
Понятно, что иногда формулировку объяснений и тому подобное трудно интерпретировать. Мне кажется, что работать там, бегать, сравнивать и читать хорошо, но более ясное и краткое объяснение никогда не повредит. Pimp Juice IT 5 лет назад 0