PowerShell - Как использовать $ _. Key в качестве свойства $ object? - PullRequest
4 голосов
/ 30 июня 2019

У меня есть хеш-таблица, например:

$hash = @{
    One="One"
    Two="Two"
    Three="Three"
    }

Это не работает:

$hash.getEnumerator() | foreach {
  $object.$_.Key = $_.Value
}

Однако это слова:

$hash.getEnumerator() | foreach {
  $test = $_.Key
  $object.$test = $_.Value
}

1 Ответ

4 голосов
/ 30 июня 2019

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' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...