在PowerShell

时间:2019-10-17 16:50:49

标签: powershell

任何人都可以告诉我以下PowerShell命令之间有什么区别吗?

Set-ItemProperty -Path "$($var)" -Name $var2 -Value $var3

Set-ItemProperty -Path ("$var") -Name $var2 -Value $var3

$ var是一个注册表位置,即HKLM:\ SOFTWARE \ Microsoft \ Windows \ CurrentVersion ...

我也看到了两者都用于New-ItemProperty中的Path参数

1 个答案:

答案 0 :(得分:4)

"$($var)"在子表达式中输出变量$var的值,然后将该输出放入字符串中。然后,该字符串将用作Set-ItemProperty语句中的参数。

("$var")将变量$var的值放在字符串中,并在分组表达式中求值(类似于子表达式,但不允许多个语句)。分组表达式的输出(在本例中为字符串)然后作为参数传递到Set-ItemProperty语句中。

您的示例语句中都不需要。单独使用变量就足够了。

Set-ItemProperty -Path $var -Name $var2 -Value $var3

如果您想在包含其他文本的字符串中插入简单变量以外的其他内容,则可以在字符串中使用子表达式($(...)),例如另一条语句的输出:

"foo $(Get-Date) bar"

对象属性的值:

"foo $($var.Foo) bar"

或数组元素:

"foo $($var[5]) bar"

因为这些不能直接在字符串中使用。如果您需要将变量的值插入字符串中,则可以不使用子表达式:

"foo ${var} bar"

如果要将表达式的输出用作语句的参数,则可以使用分组表达式((...)

Do-Something -Foo (Get-Date)

仅将字符串放入子表达式中没有任何意义。