2014-07-14 3 views
2

curl을 사용하여 powershell 스크립트 내에서 build.phonegap.com API로 JSON 문자열을 전달하려고합니다. Windows 시스템에서 실행하는 경우
phonegap's forum에 따르면, JSON 데이터는로 포맷해야합니다 :Powershell : json 문자열을 컬링으로 전달

curl.exe -ku [email protected]:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key 


을 실제로 명령 줄에서 호출 할 때이 잘 실행 않습니다.
그러나 powershell 스크립트 내에서이를 호출하려고하면 큰 따옴표가 제거 된 것처럼 보입니다.

는 지금까지, 나는 시도했다 :

  • 단일 인용 문자열에서 JSON 퍼팅 : 단일 인용 문자열의 JSON 넣기
 curl.exe -ku [email protected]:mypass -X PUT -d '"data={\"password\":\"keypass\"}"' https://build.phonegap.com/api/v1/key
  • , 도스 백 슬래시를 이스케이프하지 않고 :
 curl.exe -ku [email protected]:mypass -X PUT -d '"data={"password":"keypass"}"' https://build.phonegap.com/api/v1/key
따옴표를 이중 인용 문자열의 JSON 넣기
 curl.exe -ku [email protected]:mypass -X PUT -d '\"data={\\\"password\\\":\\\"keypass\\\"}\"' https://build.phonegap.com/api/v1/key
  • , 탈출 :
    • , 단일 인용 문자열에서 JSON을 넣는 따옴표 및 백 슬래시 (DOS 스타일의 백 슬래시)를 탈출
     curl.exe -ku [email protected]:mypass -X PUT -d "`"data={\`"password\`":\`"build*2014`\`"}`"" https://build.phonegap.com/api/v1/key



    : PowerShell을 다시 틱 문자 '로어떻게해야할까요? 시간에 대한

    감사합니다, 공원

+1

'큰 따옴표는 제거 된 것 같습니다. 어떻게 주장합니까? – njzk2

+0

들어오는 arg를 echo하는 더미 콘솔 애플리케이션을 만들었습니다. – KoenJ

답변

3

간단한 (바보) 인수를 구문 분석 모드로 PowerShell을 넣어 --% 연산자를 사용해보십시오 :

curl.exe --% -ku [email protected]:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key 

이것은 PowerShell의 인수 구문을 사용하여 실행되는 인수 구문을 사용하여 exes를 호출 할 때 매우 유용합니다. PowerShell V3 이상이 필요합니다.

+0

팁을 보내 주셔서 감사합니다. 사용자, 암호 및 키를 하드 코딩 할 때 실제로 작동합니다. 그러나이 값은 모두 powershell 변수이며 - % 연산자를 사용할 때 구문 분석되지 않습니다. – KoenJ

+0

[이 질문에 제안 된 환경 변수로 이러한 매개 변수를 제공하여 해결할 수있었습니다. (http://stackoverflow.com/questions/21386643/powershell-call-operator-with-escape-param-not- non-stati와 함께 작업). – KoenJ

+1

나는 또한이 기능에 대한 블로그 게시물을 몇 년 전에 썼다. http://rkeithhill.wordpress.com/2012/01/02/powershell-v3-ctp2-provides-better-argument-passing-to-exes/ –

0

설정 내용 유형 :

curl -H "Content-Type: application/json" -d '{"password":"keypass"}' https://build.phonegap.com/api/v1/key 
+1

그 점에 차이는 없습니다 .. 명령 줄에서 호출 할 때 명령이 제대로 작동하므로 전달되는 인수에 문제가 없습니다. Powershell 및 escape 문자와 관련이 있습니다. – KoenJ