Powershell : 아포스트로피를 올바르게 이스케이프 처리


2

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
IT 포주 주스

작업을 수행하기 위해 잘못된 cmdlet을 사용하고 있습니다. Invoke-Expression로컬 명령 (PowerShell 코드)을 실행하는 데 사용해야합니다. 실행 파일을 실행하려면 실행하십시오. 공백과 따옴표가있는 매개 변수를 사용하여 PowerShell에서 EXE 파일을 실행하는 방법에
Seth

두 가지 제안이 모두 훌륭하지만 awk거의 읽을 수없는 명령 줄로 실행될 때 혼란 스러울 수 있습니다. 그래서 명령을 스크립트로 압축하고로 업로드 pscp하고 실행했습니다 plink.
Bowi

답변:


0

완전성을 위해 이것은 내가 요청한 응답에 대한 명령입니다.

& $plinkPath -ssh $username@$host "echo well...; echo Hello, my \\\`"friend\\\`" \'brutus\', you \`$insult!"

가져옵니다

well...
Hello, my "friend" 'brutus', you $insult!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.