2016-01-21 13 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 мир

потерял речевые метки в между 'Ъ' и 'с'

Можно ли это исправить?

ответ

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

Смежные вопросы