2016-12-12 9 views
1

だから私はこのことに関して一日中髪を裂いてきました。私は、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にこれをインポートしようとしていますこれは最新で最もシンプルな様々なトラックを試しました。

私はすでに私のUnixタイムスタンプが同じコマンドは、コマンドを介して動作する理由次けど、私は理解できないであることを固定にビットオフと計画であることを知っている

{ [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 

私は、このエラーが発生します

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"' 

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 } $ヘッダ= @ { '受け入れエンコードを' = 'gzipの' 'はX-Authの-メール' = '[email protected]' 'X-Auth-Key' = '12345' } $応答= Invoke-WebRequest -Uri 'https://api.cloudflare.com/client/v4/zones/98765/logs/requests' -OutFile C :\ logname.log.gz -Headers $ headers -Body $ body -ContentType "application/json" アイデアはありますか? – cjohnson

関連する問題