2016-11-25 2 views
1

아래 항목을 PowerShell의 cmd 줄에 전달하고 싶습니다. 무엇을해야합니까?powershell에서 이러한 문자를 이스케이프하는 방법 [], "", |

["192.168.10.1|443|Atulkatiyar|passw$h"]

어떻게 PowerShell 명령으로 작성하고 명령 줄에서 실행할 수 있습니까?

+2

문제의 문자열이 자체적으로 실행될 수 없으므로 (명령을 사용하여) 얼마나 정확하게 실행 하시겠습니까? –

답변

0
cmd --% /c ["192.168.10.1|443|Atulkatiyar|passw$h"] 

--%은 "cmd를 라인에 전달"이

+0

도움이되지 않았 음 –

+0

글쎄, 당신이 달성하고자하는 것이 확실하지 않습니다.'^'는 cmd의 이스케이프 문자로 업데이트 된 답변을 확인합니다. – 4c74356b41

+1

매개 변수는'- %'이며 [PowerShell v3 이전에는 사용할 수 없습니다.] (https://blogs.msdn.microsoft.com/powershell/2012/06/13/new-v3-language-features/) . –

0
cmd.exe /C "echo `[`"192.168.10.1`|443`|Atulkatiyar`|passw`$h`"`]" 
+0

아무 것도 도움 안됨 아래는 cmd 프롬프트에서 실행할 내 전원 쉘 스크립트입니다 : $ avconfig = "'['192.168.1.21' | 443' | atulkatiyar Horizon \ Broker Agent \ bin \ v4v_brokeragentcfg.exe에 대한 작업을 알립니다. "| passw' $ h'"'] " 쓰기 호스트"avconfig : "$ avconfig $ configCmd =" ​​"" "c : \ Program Files \ VMware \ "/"avcfg $ avconfig " 쓰기 - 호스트"자동 구성 명령 : cmd/c $ configCmd " Invoke-VMScript -VM $ vm -ScriptText"cmd 시작/c $ configCmd "-ScriptType Bat -GuestUser $ UID -GuestPassword $ PASSWD -Server $ viserver -Confirm : $ false $ VM, $ UID, $ PASSWD, $ viserver가 올바르게 제공되었다고 가정합니다. –

+0

cmd 창에서 동일한 명령을 수동으로 실행하면 "c : \ Program Files \ VMware \ v Horizon \ Broker Agent \ bin \ v4v_bro에 대한 작업 알리기 keragentcfg.exe "+"/ avcfg [ "192.168.1.21 | 443 | atulkatiyar'passw $ h"] "나는 모든 옵션을 열심히 시도하고 모든 특별한 헌장을 피했습니다. 우리는 cmd 프롬프트에서 제공해야하지만 실행되지는 않습니다. –

0

그것은 당신이 무슨 뜻인지 불분명 수정되지 않은 실행 파일에 전달되는 모든 후, 이스케이프 시퀀스입니다.

PowerShell을의 관점에서

, 당신이 당신의 문제의 문자열이 단순히 '...'로 묶어야하는 문자로 처리하려는 경우 (작은 따옴표,있는 경우, 포함 작은 따옴표로 묶어야, ''로) :

> '["192.168.10.1|443|Atulkatiyar|passw$h"]' 
["192.168.10.1|443|Atulkatiyar|passw$h"] 

당신이 cmd.exe에 표준 명령 프로세서를이 문자를 통과하려면 , 같은이 적용

> cmd /c echo '["192.168.10.1|443|Atulkatiyar|passw$h"]' 
["192.168.10.1|443|Atulkatiyar|passw$h"] 

즉, 문자열에 $h이 포함되어 있습니다.이 문자열은 PowerShell 변수에 대한 참조처럼 보입니다. 먼저 해당 참조를 확장 (보간)하려면 다른 방법이 필요합니다.

> $h = 'Hi!' 

> ('["192.168.10.1|443|Atulkatiyar|passw' + $h + '"]') 
["192.168.10.1|443|Atulkatiyar|passwHi!"] 

> cmd /c echo ('["192.168.10.1|443|Atulkatiyar|passw' + $h + '"]') 
["192.168.10.1|443|Atulkatiyar|passwHi!"] 

또한, 일반적으로, 당신은 변수 참조 ($<varName>)되어야 표현식 ($(...))를 포함 할 더블 -quoted 문자열을 사용할 수 있습니다 : 다음 명령에서, 이항 연산자 +와 문자열 연결이 사용됩니다 을 확대 (보간 : 자신의 값으로 대체) - (필요한 경우, 그리고 $ 자) 해당 이벤트에 포함 된 "을 탈출 ` (역음)를 사용 :

> "[`"192.168.10.1|443|Atulkatiyar|passw$h`"]" 
["192.168.10.1|443|Atulkatiyar|passwHi!"] 

> cmd /c echo "[`"192.168.10.1|443|Atulkatiyar|passw$h`"]" 
["192.168.10.1|443|Atulkatiyar|passwHi!"] 

다른 옵션 :

은 는
    는 당신은 RHS의 값으로 인스턴스화되도록 {0} (첫 번째 피연산자)로 LHS가 자리를 포함 문자열 형식에 대한 이진 -f 연산자를 사용할 수 있습니다
  • (기반 닷넷 프레임 워크의 String.Format method은에 -)도 here를 참조하십시오
> ('["192.168.10.1|443|Atulkatiyar|passw{0}"]' -f $h) 
["192.168.10.1|443|Atulkatiyar|passwHi!"] 

> cmd /c echo ('["192.168.10.1|443|Atulkatiyar|passw{0}"]' -f $h) 
["192.168.10.1|443|Atulkatiyar|passwHi!"] 
  • PSv3 +에서 언급 한 바와 같이, 특별한 --% "중지 - 구문 분석"스위치를 사용하면 cmd.exe을 통해 나머지 매개 변수를 전달할 수 등 %PATH% 같은 cmd.exe 스타일의 환경 변수 참조에 대한 제외, 있는 그대로; 이는 PowerShell 변수 참조 및 하위 표현식이 이 아니고이 확장되었음을 의미합니다.