powershell“$()”中的“Dollar-sign”是可选的吗?

时间:2016-09-13 02:56:47

标签: powershell

我见过使用powershell设置文件的时间戳(creationtime,lastaccesstime,lastwritetime)的示例:

PS>$(get-item test.txt).lastwritetime=$(get-date "01/01/2020")

似乎有用。

此页面:http://ss64.com/ps/syntax-operators.html关于powershell运营商说"$( )"是“SubExpression运算符”。

但它似乎也可以在没有"$"的情况下工作:

PS>(get-item test.txt).lastwritetime=(get-date "01/01/2020")

和我见过的大多数PowerShell示例在使用括号时都省略了"$"

那么,powershell "$()"中的“Dollar-sign”是否可选?或者与"$"有什么区别,我只是没有看到。

"$()""()"实际上是两个不同的运算符恰好都是我展示的示例中的有效用途吗?

2 个答案:

答案 0 :(得分:2)

如果您使用多个语句或者语句嵌入字符串中,则需要$符号来表示子表达式。没有$的括号只是一个分组操作符。

$($x = 1; $y =2; $x + $y).tostring() //3

($x = 1; $y =2; $x + $y).tostring() // invalid syntax

($x = 1 + 2).tostring() //3

"$(1 +2)"  //3

答案 1 :(得分:0)

我第一次需要$()在字符串中:

$a = Get-Process "explorer"
Write-host "$a.Name" -> System.Diagnostics.Process (explorer).Name
Write-Host "$($a.Name)" -> explorer

每次我希望PowerShell首先强制计算某些内容时,我也会使用它。