Credential作成
Get-Credential でユーザーとパスワードの認証を入力するようにした
Invoke-WebRequestを利用してBasic認証を行う。
ベーシック認証を利用したダウンローダー
# Base64 encode
function Get-BasicAuthCreds {
param([string]$Username,[string]$Password)
$AuthString = "{0}:{1}" -f $Username,$Password
$AuthBytes = [System.Text.Encoding]::Ascii.GetBytes($AuthString)
return [Convert]::ToBase64String($AuthBytes)
}
$tmpcred = Get-Credential
$BasicCreds = Get-BasicAuthCreds -Username $tmpcred.UserName -Password $tmpcred.GetNetworkCredential().Password
#取り出したURLからファイル名を取り出し、変数$fileにセット
$uri = New-Object System.Uri($url)
$file = Split-Path $uri.AbsolutePath -Leaf
try {
Invoke-WebRequest -Uri $url -Headers @{"Authorization"="Basic $BasicCreds"} -OutFile $file
} catch {
$_.Exception.Response.StatusCode.Value__
if ($_.Exception.Response.StatusCode.Value__ -eq 404) {Write-host "エラー 404: $urlにアクセスできません" -foregroundcolor red}
exit
}
Write-host $file "をダウンロード完了しました。" -foregroundcolor green