2016-12-12 104 views
1

因此,我一直在關注這個問題,一直在扯掉我的頭髮。我有一個curl命令,我正在從Cloudflare中取出日誌的Windows計算機上工作,這是有效的。命令在cmd提示符下工作,但不在Powershell中,我做錯了什麼?

curl -sv -o logname.log.gz -X GET -H "Accept-encoding: gzip" -H "X-Auth-Email: [email protected]" -H "X-Auth-Key: 12345" "https://api.cloudflare.com/client/v4/zones/987654/logs/requests?start=1481509909&end=1481538709" 

我試圖與製作基於當前時間不同的開始和結束時間參數的最終目標導入到PowerShell的這一點,但是我根本無法得到命令在PowerShell中運行,我已經嘗試了各種不同的曲目,這是最新和最簡單的。

cmd.exe /c 'curl -sv -o logname.log.gz -X GET -H "Accept-encoding: gzip" -H "X-Auth-Email: [email protected]" -H "X-Auth-Key: 12345" "https://api.cloudflare.com/client/v4/zones/987654/logs/requests?start=1481509909&end=1481538709"' 

這給了我這個錯誤

{ [11971 bytes data] 
* Failed writing body (0 != 11963) 
* Failed writing data 
* Curl_http_done: called premature == 1 
* Closing connection 0 
* schannel: shutting down SSL/TLS connection with api.cloudflare.com port 443 
* schannel: clear security context handle 

我已經知道我的UNIX時間是有點過,並計劃於固定,明年,但我不明白的是,爲什麼同樣的命令工作通過命令提示而不是通過Powershell。

會有人能幫助?

謝謝

+0

不能使用單引號'CMD/C '...''爲'cmd'只支持雙引號,像'CMD/C 「......」'。 – aschipfl

回答

1

與參數在PowerShell中本機命令處理可以是一個雷區,因爲你必須處理報價和兩個特殊字符,有時嵌套。

這也可能是更安全的在PowerShell中使用Start-Process,並給它的參數數組:

Start-Process curl.exe -ArgumentList '-sv','-o','logname.log.gz','-X','GET','-H','Accept-encoding: gzip','-H','X-Auth-Email:','[email protected]','-H','X-Auth-Key:','12345','https://api.cloudflare.com/client/v4/zones/987654/logs/requests?start=1481509909&end=1481538709' 

但是,你真的應該做的,就是檢查出Invoke-WebRequest最終將容易得多。

$body = @{ 
    start = 1481509909 
    end = 1481538709 
} 

$headers = @{ 
    'Accept-Encoding' = 'gzip' 
    'X-Auth-Email' = '[email protected]' 
    'X-Auth-Key' = '12345' 
} 

$response = Invoke-WebRequest -Uri 'https://api.cloudflare.com/client/v4/zones/987654/logs/requests' -OutFile logname.log.gz -Body $body -Headers $headers 

請注意,這並沒有經過測試,但應該是一個很好的起點。

+0

謝謝!這幫助了很多,所以現在我可以要求使用上述然而,當涉及到訪問它告訴我,歸檔是一個未知的格式或損壞的log.gz文件來運行。 $身體= @ { 開始= 1481509909 結束= 1481538709 } $頭= @ { '的Accept-Encoding'= '的gzip' 'X-AUTH-電子郵件'= '[email protected]' 'X-Auth-Key'='12345' } $ response = Invoke-WebRequest -Uri'https://api.cloudflare.com/client/v4/zones/98765/logs/requests'-OutFile C :\ logname.log.gz -Headers $ headers -Body $ body -ontentType「application/json」 任何想法? – cjohnson

相關問題