如何在 Invoke-SSHCommand 中使用字符“$”而不会出错

问题描述

我尝试使用 powershell 脚本从 Linux 服务器获取信息

我使用 Windows 表单并在 RichTextBox获取信息。

一些基本命令没有问题。

示例:

$infoversion = Invoke-SSHCommand -Index 0 -Command "uname -r"

$Result_Info.text += "Kernel Version : $($infoversion.Output) + ("`n")

但是当我使用带有管道和“$”字符的命令时,它不起作用。

示例:

$infouptime = Invoke-SSHCommand -Index 0 -Command "uptime -p | awk '{print $2,$3,$4,$5,$6,$7}'"

$Result_Info.text += "Server up since $($infouptime.Output)" + ("`n")

(此命令直接作用于服务器)

我尝试设置 \$'e'$'"+chr(38)+" 但没有任何效果

如果有人可以帮助我,那就太好了:)

解决方法

PowerShell 使用反引号 ` 作为可扩展字符串中的转义字符:

$infouptime = Invoke-SSHCommand -Index 0 -Command "uptime -p | awk '{print `$2,`$3,`$4,`$5,`$6,`$7}'"

或者,由于您实际上没有任何需要扩展的变量,您可以使用单引号字符串文字 - 文字 ' 的转义序列只是 ''

$infouptime = Invoke-SSHCommand -Index 0 -Command 'uptime -p | awk ''{print $2,$3,$4,$5,$6,$7}'''