このエントリーをはてなブックマークに追加


PowerShellでHTTPのPOSTをする方法

本記事は、PowerShellのInvoke-WebRequestコマンドレットを使って、HTTPのPOSTを実現する記事になります。
PowerShellからPOSTしたいのだけど…と思われている方、本資料が参考になると思います。
JSONやXMLで返却されるのであれば、Invoke-RestMethodを使用するのも良いと思います。


関連記事

POSTするためのWebサーバを用意

以下のPHPスクリプトをPHPが動作するサーバに設置して動作確認を行いました。
POSTされたaとbを足し算するだけの簡単なスクリプトです。

<?php
$a = $_POST["a"];
$b = $_POST["b"];
$c = $a + $b;
echo $c
?>

POSTされた値を足し算し、合計値を表示するPHPスクリプトになります。

PowerShellでPOSTしてみる

上記のphpスクリプトを配置し、PowerShellからPOSTした結果は以下の通りです。

  1. POSTするパラメータをハッシュに指定。
    PS C:\> $postParams = @{a="1"; b="2"}
  2. 設定したハッシュの確認
    PS C:\> $postParams
    
    Name                           Value
    ----                           -----
    a                              1
    b                              2
  3. post.phpを指定したサーバのURLを指定し、以下のようにして実行
    PS C:\> Invoke-WebRequest http://localhost/post.php -Method POST -Body $postParams
  4. 上記のコマンドを実行すると、POSTしてサーバから返却された情報が表示されます。
     StatusCode        : 200
    StatusDescription : OK
    Content           : 3
    
    RawContent        : HTTP/1.1 200 OK
                        Connection: keep-alive
                        Content-Length: 2
                        Content-Type: text/html; charset=UTF-8
                        Date: Mon, 23 Apr 2018 14:44:43 GMT
                        Server: Apache
                        X-Powered-By: PHP/5.6.21
    
                        3
    
    Forms             : {}
    Headers           : {[Connection, keep-alive], [Content-Length, 2], [Content-Type, text/html; charset=UTF-8], [Date, Mo
                        n, 23 Apr 2018 14:44:43 GMT]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : mshtml.HTMLDocumentClass
    RawContentLength  : 2
  5. 実際に計算された情報のみ(content部分)のみ取り出すと、足し算されて合計値が取得できているのが確認できます。
    PS C:\> (Invoke-WebRequest http://just4fun.biz/fol/post.php -Method POST -Body $postParams).content
    3

したがって、以下の構文で簡単にPOSTすることができます。

Invoke-WebRequest サーバURL -Method POST -Body パラメータ

または

Invoke-WebRequest -Uri サーバURL -Method POST -Body パラメータ

上記ではパラメータとなる情報を変数に設定し、Invoke-WebRequestコマンドレットに渡していましたが、
以下のように一行で書くことも可能です。

PS C:\> (Invoke-WebRequest -Uri http://localhost/post.php -Method POST -Body @{"a"="8";"b"="7"}).content
15

以上、PowerShellのInvoke-WebRequestコマンドレットを使って簡単にPOSTできる方法の紹介でした。



添付ファイル: filepost.php 201件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-23 (月) 23:58:08