Вы можете использовать plink -ssh -l $user -batch -pw $pw $user@$IP "df -k / | tail -1 | awk ''"
.
Powershell уходит в общем:
Экранирование символов между двумя двойными кавычками:
$
нужно сбежать с`$
"
нужно сбежать с`"
`
нужно сбежать с``
Исключение:
трейлинг (в конце двойной кавычки) $
вообще не нужно экранировать.
Экранирование символов между двумя одинарными кавычками:
'
нужно сбежать с''
Экранирующие символы, не заключенные в кавычки:
$
нужно сбежать с`$
@
нужно сбежать с`@
#
нужно сбежать с`#
`
нужно сбежать с``
|
нужно сбежать с`|
{
и}
нужно сбежать с`{
и`}
;
нужно сбежать с`;
"
нужно сбежать с`"
'
нужно сбежать с`'
Исключение:
трейлинг (в конце двойной кавычки) $
вообще не нужно экранировать.
Специальные всегда экранированные символы:
`0
: Нулевой символ`a
: Alert-Character`b
: Backspace-Character`f
: Form-Feed-Character`n
: Символ новой строки`r
: Символ возврата каретки`t
: Горизонтальный символ табуляции`v
: Символ вертикальной табуляции
Специальные способы прекратить разбор специальных символов:
- Поскольку Powershell 2.0 можно использовать
@' ... '@
для предотвращения интерпретации ваших параметров, но он@'
должен находиться в той же строке, что и ваша команда, параметры должны находиться в следующей строке и'@
после отдельной строки параметров. - Начиная с Powershell 3.0 вы можете использовать,
--%
чтобы прекратить разбор всего после--%
Пример:
$h@h#h`h|hh;h"h'h$
:
- Заключено в двойные кавычки:
exampleprogram.exe "`$h@h#h``h|hh;h`"h'h$"
- Заключено в одинарные кавычки:
exampleprogram.exe '$h@h#h`h|hh;h"h''h'$
- Не заключено в кавычки:
exampleprogram.exe `$h`@h`#h``h`|h`h`;h`"h`'h$
- Использование
@' ... '@
:
exampleprogram.exe @ '
$ h @ h # h`h | h h; h "h'h $
' @
- Использование
--%
:exampleprogram.exe --% $h@h#h`h|hh;h"h'h$