При создании и работе с PSCustomObjects, которые приводят к члену NoteProperty с «определением» (как показано ниже), существует ли какой-либо простой программный способ выбора значений из полей определения, не прибегая к разделению строк?
Например, ниже, существует ли «хороший» способ извлечь значение «серебро» из поля имени «токен», которое не требует традиционных манипуляций со строками? Я возился с select и -ExpandProperty, но быстро не получал и был бы признателен за толчок в правильном направлении.
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
bsw NoteProperty decimal bsw=3.14
name NoteProperty string name=chris
token NoteProperty string token=silver
volume NoteProperty decimal volume=17.22
Спасибо.
Обновление: следуя указаниям Томаса, я придумал эту функцию для извлечения членов Noteproperty из объекта PSObject и возврата Hashtable с именами полей и значениями:
function convertObjectToHash($psObj) {
$hashBack = @{}
try {
$psObjFieldNames = $psObj | get-member -type NoteProperty | select "Name"
$psObjFieldNames | foreach-object {
$hashBack.Add($_.Name,$psObj.$($_.Name)) }
}catch{ "Error: $_" }
return $hashBack
}
Спасибо!