Help us understand the problem. What is going on with this article?

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

こんにちは。
認証proxyを用いる環境下で、下記向けの各種設定を行う Windows PowerShell 用実行ファイルを作り、これを使って Chocolatey をインストールしてみました1。また応用例として Tex Live のインストールにも使ってみました。内部の "<USERNAME>", "<PASSWORD>", "<HOSTNAME>:<PORTNUMBER>" は書き換えてください。

  • System.Net.WebClient
  • 環境変数 $env:http_proxy (wget コマンドなどが利用)
  • Chocolatey (0.9.9 以降)の動作で用いる環境変数
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 (test-path $profile) {
PS>     Get-Content Set-Proxy.ps1 | Add-Content $profile -Encoding Default
PS> } else {
PS>     Get-Content Set-Proxy.ps1 | Set-Content $profile -Encoding Default
PS> }

Chocolatey インストール

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

PS> Set-ExecutionPolicy RemoteSigned
PS> .\Set-Proxy
PS> .\Install-Chocolatey
PS> choco list -lo
Chocolatey v0.10.3
Install-Chocolatey.ps1
# Encoding::Shift-JIS
$env:chocolateyProxyUser = $user
$env:chocolateyProxyPassword = $password
$env:chocolateyProxyLocation = $proxyaddress
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) のインストーラを動かしています。

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 などの動かし方は、事前に .\Set-Proxy を動かすか、もしくは下記のように明示的に引数で -Proxy $proxyaddress -proxyCredential $creds を指定します3。下記は 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


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

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

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

kkdd
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした