как вернуть значение в следующую функцию - не в классе

Вы можете получить свойство по имени с помощью командлета 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

Определяет свойство для выбора и указывает, что необходимо попытаться расширить это свойство

https://technet.microsoft.com/en-us/library/hh849895.aspx

blockquote>
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc

0
задан tupac shakur 16 January 2019 в 13:13
поделиться