Я хочу выполнить команду из powershell, которая, в свою очередь, выполняет команду на стороннем сервере, используя plink
, Но это работает только если у меня нет '
или же "
в команде, иначе Powershell подключается и печатает исключения.
Пример:
Invoke-Expression "$plinkPath -ssh $username@$host 'echo well...; echo hello'"
дает
well...
hello
, Но что, если я хочу повторить оба '
а также "
, сказать
Invoke-Expression "$plinkPath -ssh $username@$host 'echo well...; echo hello, my "friend" 'brutus'!'"
получить
well...
hello, my "friend" 'brutus'!
?
Изменить: Расширение, я хочу иметь $
,
well...
hello, my "friend" 'brutus', you $insult!
1
Попробуйте экранировать с помощью обратной черты так (`), которая является той же клавишей, что и тильда (~) на клавиатуре. Или даже попробуйте удвоить одинарные кавычки. Читайте здесь, чтобы узнать подробности, которые также могут быть вам полезны: rlmueller.net/PowerShellEscape.htm
—
Pimp Juice IT
Вы используете неправильный командлет, чтобы сделать работу.
—
Seth
Invoke-Expression
должен использоваться для выполнения локальной команды (код PowerShell). Если вы хотите запустить исполняемый файл, просто сделайте это. Возможно рассмотрите возможность использования одного из вариантов, перечисленных в Как запустить EXE-файл в PowerShell с параметрами с пробелами и кавычками
В то время как оба ваши предложения в порядке, для меня это стало беспорядочным
—
Bowi
awk
с его (даже для себя) почти нечитаемыми командными строками. В итоге я упаковал команды в скрипт и загрузил их с pscp
и запустить его с plink
,