我使用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'。
我该如何解决这个问题?
答案 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\"')