我见过使用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”是否可选?或者与"$"
有什么区别,我只是没有看到。
"$()"
和"()"
实际上是两个不同的运算符恰好都是我展示的示例中的有效用途吗?
答案 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首先强制计算某些内容时,我也会使用它。