为什么添加引号会改变 Powershell 中表达式的值?
Why does adding quotation changes the expression's value in Powershell?
我刚刚开始学习 Powershell,但有一件事我无法理解。见下文:
> Write-output $(Get-Date -DisplayHint Date)
//Expect: Tuesday, November 3, 2020
//Got: Tuesday, November 3, 2020
> Write-output "$(Get-Date -DisplayHint Date)"
//Expect: Tuesday, November 3, 2020
//Got: 11/03/2020 20:42:27
对于引号插值的第二行,有人可以解释为什么它显示不同的格式吗?
谢谢,
日期转换成字符串后可以自定义显示。
在上面的代码中,您用双引号括起来,powershell 将其视为字符串。
(Get-Date -DisplayHint Date).toString() 也可能给你同样的结果。
这是当前文化中 ToString()
方法的默认格式。这个输出是“转成字符串”的结果。以下示例在转换为字符串时都会产生类似的输出。
Write-Host(将输出转换为字符串)
Write-Host (Get-Date -DisplayHint Date)
11/3/2020 11:46:00 PM
ToString()
(Get-Date -DisplayHint Date).ToString()
11/3/2020 11:48:55 PM
-作为运算符
(Get-Date -DisplayHint Date) -as [string]
11/03/2020 23:49:37
字符串插值
"{0}" -f (Get-Date -DisplayHint Date)
11/3/2020 11:51:27 PM
当然,您已经发现通过用引号引起来转换为字符串。
如果您想控制它的格式,这里有几种方法。
(Get-Date).ToLongDateString()
Tuesday, November 3, 2020
(Get-Date).ToString("dddd, MMMM d, yyyy")
Tuesday, November 3, 2020
Get-Date -f "dddd, MMMM d, yyyy"
Tuesday, November 3, 2020
我刚刚开始学习 Powershell,但有一件事我无法理解。见下文:
> Write-output $(Get-Date -DisplayHint Date)
//Expect: Tuesday, November 3, 2020
//Got: Tuesday, November 3, 2020
> Write-output "$(Get-Date -DisplayHint Date)"
//Expect: Tuesday, November 3, 2020
//Got: 11/03/2020 20:42:27
对于引号插值的第二行,有人可以解释为什么它显示不同的格式吗?
谢谢,
日期转换成字符串后可以自定义显示。 在上面的代码中,您用双引号括起来,powershell 将其视为字符串。 (Get-Date -DisplayHint Date).toString() 也可能给你同样的结果。
这是当前文化中 ToString()
方法的默认格式。这个输出是“转成字符串”的结果。以下示例在转换为字符串时都会产生类似的输出。
Write-Host(将输出转换为字符串)
Write-Host (Get-Date -DisplayHint Date)
11/3/2020 11:46:00 PM
ToString()
(Get-Date -DisplayHint Date).ToString()
11/3/2020 11:48:55 PM
-作为运算符
(Get-Date -DisplayHint Date) -as [string]
11/03/2020 23:49:37
字符串插值
"{0}" -f (Get-Date -DisplayHint Date)
11/3/2020 11:51:27 PM
当然,您已经发现通过用引号引起来转换为字符串。
如果您想控制它的格式,这里有几种方法。
(Get-Date).ToLongDateString()
Tuesday, November 3, 2020
(Get-Date).ToString("dddd, MMMM d, yyyy")
Tuesday, November 3, 2020
Get-Date -f "dddd, MMMM d, yyyy"
Tuesday, November 3, 2020