Edited at

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

More than 1 year has passed since last update.

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などにアクセスする際には、簡単にできて良いのかなぁと。