谁能告诉我以下 PowerShell 命令之间有什么区别(如果有):
Set-ItemProperty -Path "$($var)" -Name $var2 -Value $var3
Run Code Online (Sandbox Code Playgroud)
和
Set-ItemProperty -Path ("$var") -Name $var2 -Value $var3
Run Code Online (Sandbox Code Playgroud)
$var 是一个注册表位置,即 HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion...
我还看到两者都用于 New-ItemProperty 中的 Path 参数
"$($var)"$var在子表达式中输出变量的值,然后将该输出放入字符串中。然后将该字符串用作Set-ItemProperty语句中的参数。
("$var")将变量的值$var放在一个字符串中,并在一个分组表达式中计算它(类似于子表达式,但不允许多个语句)。分组表达式的输出(在本例中是字符串)然后作为Set-ItemProperty语句中的参数传递。
您的示例语句中也不需要。单独使用变量就足够了。
Set-ItemProperty -Path $var -Name $var2 -Value $var3
Run Code Online (Sandbox Code Playgroud)
$(...)如果要将简单变量以外的其他内容插入还包含其他文本的字符串,例如另一个语句的输出,则可以在字符串中使用子表达式 ( ):
"foo $(Get-Date) bar"
Run Code Online (Sandbox Code Playgroud)
对象属性的值:
"foo $($var.Foo) bar"
Run Code Online (Sandbox Code Playgroud)
或数组的一个元素:
"foo $($var[5]) bar"
Run Code Online (Sandbox Code Playgroud)
因为这些不能直接在字符串中使用。如果您需要将变量的值插入字符串中,您可以在没有子表达式的情况下执行此操作:
"foo ${var} bar"
Run Code Online (Sandbox Code Playgroud)
(...)如果您希望将表达式的输出用作语句的参数,则可以使用分组表达式 ( ):
Do-Something -Foo (Get-Date)
Run Code Online (Sandbox Code Playgroud)
仅将字符串放入子表达式中没有任何意义。
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |