协慌网

登录 贡献 社区

如何在 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 ,p34,子表达式扩展。

单引号和双引号之间是有区别的。 (我正在使用 PowerShell 4)。

您可以执行此操作(如本杰明所说):

$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

(我发现使用方法:转义字符,定界符和引号非常有用)。

您也可以使用-join

例如

$var = -join("Hello", " ", "world");

将为 “$ var” 分配 “Hello world”。

所以要输出,在一行中:

Write-Host (-join("Hello", " ", "world"))