2015-11-04 101 views
4

我試圖調用在PowerShell中的curl命令,並通過一些JSON的信息。PowerShell的捲曲雙引號

這裏是我的命令:

curl -X POST -u username:password -H "Content-Type: application/json" -d "{ "fields": { "project": { "key": "key" }, "summary": "summary", "description": "description - here", "type": { "name": "Task" }}}" 

我是越來越通配符的錯誤和「無與倫比的括號」和主機無法解析等

然後我試圖將字符串與前綴雙引號反引號字符,但它不能識別的描述JSON領域-字符

感謝

編輯1:

當我在一個普通的批處理文件寫的curl命令,我用雙引號也沒有單引號。另外,在-d字符串中,我使用\將所有雙引號轉義並且該命令正常工作。

在這種情況下,我的curl實際上是指向curl.exe。我指定了路徑,只是沒有在這裏列出。我也試過圍繞-d添加單引號和我:

curl: option -: is unknown curl: try 'curl --help' or 'curl --manual' for more information 

好像它不能在JSON

+1

** 1)**嘗試封閉在單引號代替雙** 2)**確保'curl.exe'的'-d'說法實際上是被調用。如果我沒記錯的話'curl'在PowerShell中可以爲'調用,WebRequest' – arco444

+0

您好,請您檢查以上 – Kingamere

+0

確定的編輯,可能是再退讓的別名。在powershell中,轉義字符是反引號'所以也許嘗試在引號*裏面使用* json – arco444

回答

8

-字符識別數據到curl.exe,而不是試圖逃避它。如果你使用@-作爲數據參數

$data = @{ 
    fields = @{ 
     project = @{ 
      key = "key" 
     } 
     summary = "summary" 
     description = "description - here" 
     type = @{ 
      name = "Task" 
     } 
    } 
} 

$data | ConvertTo-Json -Compress | curl.exe -X POST -u username:password -H "Content-Type: application/json" -d "@-" 

curl.exe讀取標準輸入。

P.S:我強烈建議你使用,而不是手動構建JSON字符串如圖所示合適的數據結構和ConvertTo-Json,。

+0

我可以擴展json結構中的變量嗎?就像我設置$ var =「info」,引用$ var會擴展它? – Kingamere

+1

當然,這是一個普通的Powershell對象。您可以在其中使用任何Powershell表達式,您可以使用循環來構建它,等等。 – Tomalak

+0

另外,在$ data變量中,用於@的字符是什麼? – Kingamere