如何在PowerShell中连接字符串和变量?

假设我有以下代码片段:

$assoc = New-Object psobject -Property @{
    Id = 42
    Name = "Slim Shady"
    Owner = "Eminem"
}

Write-host $assoc.Id + "  -  "  + $assoc.Name + "  -  " + $assoc.Owner

我期望这个片段显示:

42 - Slim Shady - Eminem

但相反,它显示:

42 + - + Slim Shady + - + Eminem

这使我认为+运算符不适合连接字符串和变量。

你应该如何用PowerShell来解决这个问题?


Write-Host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"

请参阅Windows PowerShell语言规范版本3.0,第34页子表达式扩展。


似乎没有人提到过单引号和双引号的区别。 (我正在使用PowerShell 4)。

你可以这样做(正如@Ben所说):

$name = 'Slim Shady'
Write-Host 'My name is'$name
-> My name is Slim Shady

或者你可以这样做:

$name = 'Slim Shady'
Write-Host "My name is $name"
-> My name is Slim Shady

单引号是为了文字,请输出完全像这样的字符串。 双引号用于当你想完成一些预处理(例如变量,特殊字符等)

所以:

$name = "Marshall Bruce Mathers III"
Write-Host "$name"
-> Marshall Bruce Mathers III

鉴于:

$name = "Marshall Bruce Mathers III"
Write-Host '$name'
-> $name

(http://ss64.com/ps/syntax-esc.html我觉得很好参考)。


一种方法是:

Write-host "$($assoc.Id)  -  $($assoc.Name)  -  $($assoc.Owner)"

另一个是:

Write-host  ("{0}  -  {1}  -  {2}" -f $assoc.Id,$assoc.Name,$assoc.Owner )

或者只是(但我不喜欢它)):

Write-host $assoc.Id  "  -  "   $assoc.Name  "  -  "  $assoc.Owner
链接地址: http://www.djcxy.com/p/48609.html

上一篇: How do I concatenate strings and variables in PowerShell?

下一篇: Microsoft outlook API give 404 error