LoginSignup
43
35

認証proxyを用いる環境設定(Windows PowerShell)

Last updated at Posted at 2017-01-19

こんにちは。
認証proxyを用いる環境下で、下記向けの各種設定を行う PowerShell 用実行スクリプトを作りました1

  • System.Net.WebClient 向けの DefaultWebProxy (Invoke-WebRequest コマンドなどが利用)
  • 環境変数 $env:http_proxy(wget.exe コマンドなどが利用)
  • Chocolatey の動作で用いる環境変数

これを使って今回 Chocolatey をインストールし2、さらに応用例として Tex Live のインストールにも使いました。

内部の "<USERNAME>", "<PASSWORD>", "<HOSTNAME>:<PORTNUMBER>" は書き換えてください。

PS> .\Set-Proxy
Set-Proxy.ps1
# Encoding::Shift-JIS
$user = "<USERNAME>"
$password = "<PASSWORD>"
$proxyhost = "<HOSTNAME>:<PORTNUMBER>"
$proxyaddress = "http://$($proxyhost)/"
$proxyaddress_with_authenticattion = "http://$($user):$($password)@$($proxyhost)"
$env:http_proxy = $proxyaddress_with_authenticattion
$env:https_proxy = $proxyaddress_with_authenticattion
$env:ftp_proxy = $proxyaddress_with_authenticattion
$password_secure = ConvertTo-SecureString $password -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential $user, $password_secure
$proxy = New-Object System.Net.WebProxy $proxyaddress
$proxy.Credentials = $creds
[System.Net.WebRequest]::DefaultWebProxy = $proxy
起動時に自動実行させる

なおこのSet-Proxy.ps1の内容を $profile ファイル内へ書き込めば、PowerShell 起動時に自動実行されます。

PS> if (-Not(test-path $profile)) {New-Item -Path $profile -ItemType "file" -Force}
PS> Get-Content Set-Proxy.ps1 | Add-Content $profile -Encoding Default

Chocolatey インストール

下記の使用例では、Chocolatey を認証proxyを通してインストールしています(PowerShell を管理者権限で実行3)。

PS> .\Set-Proxy
PS> .\Install-Chocolatey
PS> choco list -lo
Chocolatey v0.10.3
Install-Chocolatey.ps1
# Encoding::Shift-JIS
set ChocolateyInstall=C:\ProgramData\chocolatey
Invoke-Expression ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
choco config set proxyUser $user
choco config set proxyPassword $password
choco config set proxy $proxyhost
各種プログラム(コマンド)のインストール例

そしてインストールされた Chocolatey を使って、wget (認証proxyに対応), unzip をインストールしました。

PS> choco install -y wget unzip
PS> choco upgrade -y all
wget コマンド等の確認

インストールした wget, unzip コマンドを確認すると、

PS> get-command wget, unzip
CommandType     Name          Definition
-----------     ----          ----------
Application     wget.exe      C:\ProgramData\chocolatey\bin\wget.exe
Application     unzip.exe     C:\ProgramData\chocolatey\bin\unzip.exe

Tex Live インストール(wget を利用)

下記例では wget と unzip を使って Tex Live (installing over the Internet) のインストーラを動かしています4

PS> wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl.zip
PS> unzip install-tl.zip
PS> .\install-tl-20170618\install-tl-windows.bat -no-gui --no-persistent-downloads
PS> tlmgr update --self --all --no-persistent-downloads

Invoke-WebRequest, Install-Module などを動かす

Invoke-WebRequest や Install-Module なども、System.Net.WebClient 準拠です。したがって事前に .\Set-Proxy を動かせば良いです。

明示的に -Proxy で指定

もしくは下記のように明示的に引数で -Proxy $proxyaddress -proxyCredential $creds を指定しても良いです5。下記は NuGet, PowerShellGet をインストールする使用例です。

PS> Invoke-WebRequest -Uri 対象url -OutFile 保存先パス -Proxy $proxyaddress -proxyCredential $creds
PS> Install-PackageProvider -Name NuGet -Proxy $proxyaddress -proxyCredential $creds
PS> Install-Module Name PowerShellGet  -Proxy $proxyaddress -proxyCredential $creds
PS> Find-Package -Name ... -Proxy $proxyaddress -proxyCredential $creds

システム設定(WinInet)による proxy 設定

コマンドによっては、システム(WinInet) の proxy 設定6の方が優先される作りになっています。例えば、

  • winget コマンド
  1. なお前もって、PowerShell コマンドライン(管理者権限)上で ExecutionPolicy を設定し、スクリプトを実行可能とする必要があります: PS> Set-ExecutionPolicy RemoteSigned

  2. 今回の方法は、前回の「System.Net.WebClient の認証proxy経由対応(環境変数設定)」とは方法を変えました。また、参考:「認証Proxy経由でのChocolateyの利用

  3. Windows PowerShell の管理者権限での起動方法は、Windows ボタン(タスクバーの左端)をマウスで右クリックし、起動用メニューから選択し起動する方法がなどがあるようですが、実際に動く方法を見つける必要があるようです(「PowerShell を管理者権限で起動する方法」)。

  4. 参考:「各種コマンド(wget など)およびアプリケーションソフトを、Chocolatey を利用しインストール(PowerShell)

  5. 参考: 「proxy環境下で、Powershellからwgetする」 。

  6. これは、いわゆる IE インターネットオプション設定とも呼ばれている設定です。参考:「Windows10のプロキシ(Proxy)設定を完全削除する為の設定箇所一覧

43
35
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
43
35