使用字符串连接Cmdlet输出

I s*_*ica 1 powershell concatenation

如何在一行中向主机输出命令输出和文字字符串的组合?

我正在尝试将(Get-BitLockerVolume -MountPoint X:).EncryptionPercentage(返回12)与文字结合起来'% complete',如下所示:

(Get-BitLockerVolume -MountPoint X:).EncryptionPercentage + '% complete'
Run Code Online (Sandbox Code Playgroud)

作为回报,我希望得到:

12%完成

相反,我得到错误无法将值"%complete"转换为"System.Single".错误:"输入字符串的格式不正确."

我怎么能在一条线上做到这一点?我已经搜索了一个解决方案,但显然不知道如何说出这个问题,因为我一直在获取有关如何连接字符串或变量但不是命令输出的信息.示例:PowerShell:在cmdlet之后使用变量连接字符串

Ben*_*enH 6

使用PowerShell时,+它会尝试将第二个参数转换为第一个参数的类型.EncryptionPercentage是一个Single所以它会尝试强制'% complete'转换为Single抛出错误.

为了解决这个问题,您可以EncryptionPercentage抢先使用字符串.

 [string](Get-BitLockerVolume -MountPoint X:).EncryptionPercentage + '% complete'
Run Code Online (Sandbox Code Playgroud)

或者你可以使用子表达式在双引号内进行字符串插值 $()

"$((Get-BitLockerVolume -MountPoint X:).EncryptionPercentage)% complete"
Run Code Online (Sandbox Code Playgroud)

正如TessellatingHeckler指出的那样,该.ToString()方法也将转换为String

(Get-BitLockerVolume -MountPoint X:).EncryptionPercentage.ToString() + '% complete'
Run Code Online (Sandbox Code Playgroud)

您可以使用format运算符-f将值插入到字符串中.{}之后逗号分隔的参数的索引在哪里-f

'{0} % Complete' -f (Get-BitLockerVolume -MountPoint X:).EncryptionPercentage
Run Code Online (Sandbox Code Playgroud)