6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShellで、セッションを次のリクエストに渡す方法

Posted at

PowerShellでは、Webのリクエストを実行するコマンドレットがあります。
それらを使う際、セッション情報をリクエストで引き継ぐ方法を書きます。

用途

PowerShellで、ログイン→何らかのリクエスト→ログアウトのような処理をする際、ログインで得たセッションを引き継いで利用する。

対象のコマンドレット

コマンド名 処理 公式
Invoke-WebRequest ヘッダー等がついた、そのままのHTMLを返す リンク
Invoke-RestMethod レスポンスがJSON等なら、その状態で返す リンク

どちらも、リクエストを実行して、結果を取得する点では共通です。
例として、Invoke-RestMethodを使用しますが、どちらのコマンドレットでも使用できます。

セッションの取得

ログインのAPIを呼び出すとします。下記のURL等は適当で、随時読み替えてください。
また、ログイン処理は、JSONでユーザーID等を渡すものとします。

executor.ps1
# ルートのURL
$hostUrl = "https://hogeService.com/"
# ログインAPIのパス
$login = "rest/login"

$hosturi = New-Object System.Uri ($hostUrl)
$url = New-Object System.Uri ($hosturi, $login)

# ログイン情報
$inputs = @{
    username = "userName";
    password = "pass";
}

$json = $inputs | ConvertTo-Json;
$headers = @{ #何かあれば }

$res = Invoke-RestMethod -uri $url.AbsoluteUri `
    -Method Post `
    -Body $json `
    -ContentType "application/json" `
    -Headers $headers `
    -SessionVariable loginSession # loginSessionに、セッション情報が格納される

-SessionVariableを付与し、上記のように書くと、$loginSessionという変数が使えるようになります。これがセッションです。

##セッションを使う
次のリクエストに、セッションを付加します。

executor.ps1
# 処理APIのパス
$search = "rest/search"

$url = New-Object System.Uri ($hosturi, $search)

# 検索情報
$inputs = @{
    date = Get-Date -Format "yyyy-MM-dd";
    title = "hogehoge";
}

$json = $inputs | ConvertTo-Json;

$res = Invoke-RestMethod -uri $url.AbsoluteUri `
    -Method Get `
    -Body $json `
    -ContentType "application/json" `
    -Headers $headers `
    -WebSession $loginSession

渡すときは、-WebSessionパラメータを使います。

利用上の注意

REST APIを呼び出す場合は、そのAPI仕様をよく見ましょう。
そこに、セッションを渡すとか、ログインの戻り値の一部をヘッダーに含めろ等の指示があると思います。
それを見て、セッションを渡せ、と書いてある場合は、上のようにしてセッションを引き渡しましょう。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?