任何人都可以告诉我以下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参数
答案 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)
仅将字符串放入子表达式中没有任何意义。