LoginSignup
16
20

More than 5 years have passed since last update.

Invoke-WebRequest , Invoke-RestMethod で 基本認証

Last updated at Posted at 2017-04-24

PowerShellのコマンドレット Invoke-WebRequest , Invoke-RestMethod で Basic認証 / BasicAuth をかける方法。

-Credential 引数に ユーザー名か、PSCredentialオブジェクトを渡してあげます。

確認環境

パッケージ バージョン
OS X 10.11.6 , El Capitan
PowerShellCore v6.0.0-alpha.18

ヘルプ

Invoke-RestMethod

-Credential

Specifies a user account that has permission to send the request. 
The default is the current user.

Type a user name, such as User01 or Domain01\User01, 
or enter a PSCredential object, such as one generated 
by the Get-Credential cmdlet.

Credential 作成、実行

Credential 作成

ヘルプの通り Get-Credential を使う場合。 (パスワードを引数で渡す方法はないので、実行時に入力)

$USER = "namae"
$cred = Get-Credential -UserName $USER -Message "enter PASS"

毎回いれたくないけど、パスワードをハードコードしたくない人向け。

# ファイルにパスワードを保存しておく (暗号化文字列な状態で)
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File sec.txt

# ファイルに保存しておいたパスワードを利用する
$USER = "namae"
$secpasswd = cat sec.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential($USER, $secpasswd)

ちょっと試すだけだから、ファイルの利用とかは避けたいという場合。

$USER = "namae"
$PASS = "himitsu"
$secpasswd = ConvertTo-SecureString $PASS -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($USER, $secpasswd)

コマンドレットを実行

Credential が作成できたら、後は実行だけ

Invoke-WebRequest -Uri "http://internal.server.local/api" -Credential $cred

参考:

その他:

PowerShell 6.0 のコマンドレットには -SkipCertificateCheck オプションが追加されているので、SSL自己証明書を利用している際には、手軽にスキップできました。開発用途で立ててあるAPIなどにアクセスする際には、簡単にできて良いのかなぁと。

16
20
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
16
20