假设我有以下片段:

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

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

我希望这段代码显示:

42-Slim Shady-阿姆

但相反,它显示:

42+-+斯利姆·沙迪+-+埃米纳姆

这让我觉得+运算符不适合连接字符串和变量。

您应该如何使用PowerShell实现这一点?


当前回答

这些答案看起来都很复杂。如果在PowerShell脚本中使用此功能,则只需执行以下操作:

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

它将输出

我叫斯利姆·沙迪

注意单词之间是如何放置空格的

其他回答

(当前PowerShell版本5.1.17134.407)

截至目前,这也有效:

$myVar = "Hello"

echo "${myVar} World"

注意:这只适用于双引号

连接字符串就像在DOS时代一样。这对日志记录来说是一件大事,因此您可以:

$strDate = Get-Date
$strday = "$($strDate.Year)$($strDate.Month)$($strDate.Day)"

Write-Output "$($strDate.Year)$($strDate.Month)$($strDate.Day)"
Write-Output $strday
$assoc = @{
    Id = 34
    FirstName = "John"
    LastName = "Doe"
    Owner = "Wife"
}

$assocId = $assoc.Id
$assocFN = $assoc.FirstName
$assocLN = $assoc.LastName
$assocName = $assocFN, $assocLN -Join " "
$assocOwner = $assoc.Owner

$assocJoin = $assocId, $assocName, $assocOwner -join " - "
$assocJoin
#Output = 34 - John Doe - Wife

您还可以访问C#/.NET方法,以下方法也适用:

$string1 = "Slim Shady, "
$string2 = "The real slim shady"

$concatString = [System.String]::Concat($string1, $string2)

Output:

Slim Shady, The real slim shady

您也可以使用-join

E.g.

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

将为$var分配“Hello world”。

因此,在一行中输出:

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