Ви можете отримати властивість за іменем за допомогою Select-Object
командлету та вказавши імена властивостей, які вас цікавлять. Зауважте, що це не просто повертає вихідне значення для цього ресурсу; натомість ви отримуєте щось, що все ще поводиться як об’єкт.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
Для того, щоб використовувати значення для цієї властивості, вам все одно потрібно буде визначити, яку саме власність ви шукаєте, навіть якщо є лише одна властивість:
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
Відповідно до інших відповідей тут, якщо ви хочете використовувати одне властивість у рядку, вам необхідно оцінити вираз (поставити навколо нього дужки) та префікс зі знаком долара ($), щоб оголосити вираз динамічно як змінну, яку потрібно вставити в рядок:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
Цілком правильно, інші відповіли на це питання, рекомендуючи -ExpandProperty
параметр для Select-Object
командлета. Це обходить частину головного болю, повертаючи значення вказаної властивості, але ви хочете використовувати різні підходи в різних сценаріях.
-ExpandProperty <String>
Вказує властивість для вибору та вказує на те, що слід спробувати розширити цю властивість
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
повноваження змінні
select -expand "SomeProp"
якщо ви хочете значення.select "SomeProp"
повертає об'єкт зберігання з властивістю "SomeProp", а потім він майже повернувся на етап 1.