本文翻译自: How do I concatenate strings and variables in PowerShell?

Suppose I have the following snippet: 假设我有以下代码段:

$assoc = New-Object psobject -Property @{
    Id = 42
    Name = "Slim Shady"
    Owner = "Eminem"
Write-host $assoc.Id + "  -  "  + $assoc.Name + "  -  " + $assoc.Owner

I'd expect this snippet to show: 我希望这个代码片段显示出来:

42 - Slim Shady - Eminem

But instead it shows: 但是它显示:

42 + - + Slim Shady + - + Eminem

Which makes me think the + operator isn't appropriate for concatenating strings and variables. 这使我认为+运算符不适用于连接字符串和变量。

How should you approach this with PowerShell? 如何使用PowerShell处理此问题?

参考:https://stackoom.com/question/11Pgj/如何在PowerShell中连接字符串和变量

您需要将表达式放在括号中,以防止将它们视为与cmdlet不同的参数:

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

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

One way is: 一种方法是:

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

Another one is: 另一个是:

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

Or just (but I don't like it ;) ): 或者只是(但我不喜欢它;)):

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

Try wrapping whatever you want to print out in parenthesis: 尝试用括号将要打印的内容包装起来:

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

Your code is being interpreted as many parameters being passed to Write-Host . 您的代码被解释为将许多参数传递给Write-Host Wrapping it up inside parenthesis will concatenate the values and then pass the resulting value as a single parameter. 将其包装在括号内将串联这些值,然后将结果值作为单个参数传递。

这是另一种替代方法:

Write-host (" {0}  -  {1}  -  {2}" -f $assoc.Id, $assoc.Name, $assoc.Owner)
                    Suppose I have the following snippet: 假设我有以下代码段: $assoc = New-Object psobject -Property @{    Id 
				
本文介绍在PowerShell字符串,如何禁止字符串某分字符被转义或部分字符被当作变量,即让字符串所有的字符都原样输出。 在PowerShell,转义字符是以字符(·)开头的一部分特殊字符,可以用于实现换行、TAB等功能。而变量则是以符号($)开头,代表一个值。之前的文章我们介绍过转义字符,也介绍过在字符串包含变量。有兴趣的朋友可以去了解一下。 在PowerShell可以用一对双引号引起一个字符串,也可以使用一对单引号引起一个字符串。而用单引号与双引号最大的一个区别是,双引号引起一的字符串称之为可扩展的字符串,而单引号引起的字符串叫字面意义字符串。即单引号引起的字符串,不管是出
在指令执行过程,会有一些数据产生,这些数据被用于以后的语句,需要一个存储单元暂时的存放这些数据,这个时候定义一个变量来存储数据。例如$string = “Hello Powershell!” Powershell无需declare声明,定义变量前缀有”$”符号 常见变量类型 数值型(int) 字符型(char) 布尔型(bool) 定义变量 $a = 100 #变量$a值赋予10...
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示更有效地传达信息。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示更有效地传达信息。