Plink删除双引号

时间:2016-01-21 11:06:35

标签: powershell plink

我使用PowerShell在Linux服务器上远程发出命令。我使用plink连接服务器。

然而,plink在我想要运行的命令中删除了双引号。这会阻止这些命令工作。

$user = "user"
$password = "password"
$hostname = "host"
$plinkPath = gci -Recurse | Where-Object {$_.Name -eq "plink.exe"} | select -First 1 | foreach{$_.FullName}
& $plinkPath "$User@$hostname" -pw $password "echo" "hello ab`"cdef world"

这给出了结果

  

你好abcdef世界

它在' b'之间失去了语音标记。以及' c'。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我想,我已经认识到了, How do I pass a literal double quote from PowerShell to a native command? 。我不完全确定它为什么会起作用,但确实如此:

$user = "user"
$password = "password"
$hostname = "host"
$plinkPath = gci -Recurse | Where-Object {$_.Name -eq "plink.exe"} | select -First 1 | foreach{$_.FullName}
$command = "hello ab`\`"cdef world"
& $plinkPath "$User@$hostname" -pw $password "echo" ($command -replace '(\\*)"','$1$1\"')

Showing it working