2016-01-21 75 views
1

我正在使用powershell在Linux服務器上遠程發出命令。我正在使用plink連接到服務器。Plink去掉雙引號

但是plink去掉了我想運行的命令中的雙引號。這會停止這些命令的工作。

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

這給出結果

你好ABCDEF世界

失去了講話標誌着 'B' 和 'C'

誰能解決這個問題之間?

回答

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 "[email protected]$hostname" -pw $password "echo" ($command -replace '(\\*)"','$1$1\"') 

showing it working