PowerShell-如何使用$ _。Key作为$ object属性?

时间:2019-06-30 18:10:14

标签: powershell

我有一个像这样的哈希表:

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

这样做不起作用:

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

但是这句话:

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

1 个答案:

答案 0 :(得分:4)

PowerShell允许您将属性名称指定为表达式,这是您在if (purgeWords.Any(word => messageToSend.ToLower().Contains(word))) { isBadWord = true; } else . . . 中成功使用的名称:变量$object.$test的值用作属性名称。

但是,根据表达式的复杂程度,您可能需要$test来描述它:

因此,您必须使用(...)而不是$object.($_.Key)-后者将被解释为嵌套属性访问。


退后一步:

PowerShell允许您直接从哈希表构造和初始化具有无参数构造函数和公共属性的类型;例如(PSv5 +):

$object.$_.Key