PowerShell позволяет указывать имена свойств в виде выражений , что вы успешно использовали в $object.$test
: значение переменной $test
служило в качестве имени свойства.
Однаков зависимости от сложности выражения вам может потребоваться (...)
для его определения:
Следовательно, вы должны использовать $object.($_.Key)
вместо $object.$_.Key
- последнее будет интерпретировано как nested доступ к свойству.
Шаг назад:
PowerShell позволяет создавать и инициализировать типы, имеющие конструктор без параметров и общедоступные свойства, непосредственно из хеш-таблицы;например (PSv5 +):
# Type (class) with parameterless constructor and public properties.
class Foo {
[string] $Bar
[int] $Baz
}
# Instantiate [Foo] and set its properties from a hashtable
$newFoo = [Foo] @{ Baz = 42; Bar = 'none' }