2012-07-25 21 views
8

新しいinvoke-restmethodコマンドレットを使用してJSONファイルをPOSTしようとしましたが、正常に完了しました。しかし、私はCURLを使用したときと同じようにWebサーバーからの応答を受け取っていません。私が達成しようとしていることについては、私はreposneからPOSTに情報を取り、これを別のPOSTコマンドに使用する必要があります。Powershell v3 Invoke-RestMethod

誰かがサーバーから期待される応答をどのように得ることができるか説明してください。以下はCURLの2つのコマンド、Invoke-RestMethodを使った2つ目のコマンドです。 curlコマンドは正しいPOSTを実行し、応答を返します。 Powershellコマンドは正しいPOSTを実行しますが、応答は返しません。

おかげ

編集:私はpsの出力から取得しようとしています信じて主なものは、「レスポンスヘッダ」、すなわちです。いくつかの釣りの後curlコマンド

< HTTP/1.1 201 Created 
< Date: Thu, 26 Jul 2012 01:20:06 GMT 
< Server: Apache 
< X-EM7-Implemented-methods: GET,PUT,POST 
< X-Powered-By: ScienceLogic,LLC - EM7 API/Integration Server 
< Location: /ticket/321750 
< X-EM7-status-message: ticket /ticket/321750 added. 
< X-EM7-status-code: CREATED 
< Content-Length: 830 
< Content-Type: application/json 
< 

curlコマンド

curl -f -v -s -k --no-sessionid -H X-em7-beautify-response:1 -H content- type:application/json https://URLHERE --data-binary @jsonfile.json 

PowerShellのコード

$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("certfile.crt") 
$json = Get-Content jsonfile.json 
$cred = Get-Credential -Message "Enter Credentials" 

Invoke-RestMethod -Uri https://URLHERE -Credential $cred -Body $json -Certificate $cert -ContentType application/json -Method POST 
+0

ドキュメントでは、このコマンドレットは、 '-OutFile path-to-file'も指定しない限り、パイプラインを使って結果を自動的に送信することになっていると言います。また、コマンドレットからXmlDocument、HtmlWebResponseObject、およびstringが出力されると主張しています。これはうまくいくはずです。私は '-OutFile c:\ response.txt'を潜在的な回避策として使用しようとします。それがうまくいかない場合は、バグを報告する時が来たと言えます。あなたはV3のビルドを使っていますか? –

+0

私は私の質問を間違って述べたかもしれないと思います。私は本当にpowershellコマンドからの出力を得ていますが、curlコマンドが出力するすべてを取得しているわけではありません。特にリクエストヘッダ。私は上記の私の質問を再現します。 – floyd

+0

あなたはどんな出力を得ていますか?出力を '| 'で実行してみてください。 Get-Member'を使用して、取得しているオブジェクトのタイプを確認します。既定では、PowerShellはオブジェクトで利用可能なすべての情報を表示するとは限りません。 –

答えて

17

から以下の出力は、私の周りには、コマンドレットInvoke-WebRequestを発見しました。このコマンドレットは、ヘッダーと応答を返す以外は、基本的にInvoke-RestMethodと同じです。

+0

明らかに私は2日間自分の答えを受け入れることができません。それではあなたを見てください:) – floyd

+1

$ result = Invoke-RestMethod ...と$ result = Invoke-WebRequest ...の両方が、-OutFileとともに使用された場合、$ resultオブジェクトにHTTPステータスコードなどを提供しないようです、それはWin 8.1 PS4のテストではnullです。代わりに、私は-OutFileを落として$ result.StatusCodeをチェックし、Write-Output $ result.ToString |セットコンテンツ$ファイル(私はテキストを扱っているので$ result.contentは必要ありません) – Straff