2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerShellの社内プロキシ認証を設定する

Last updated at Posted at 2023-06-23

背景

また社内プロキシに苦しめられています。

Windows上でpythonのスクリプトを書こうと必要なライブラリをpip installしようとしたところ、案の定プロキシに阻まれました。
というわけで今回はPowerShellでネットワークに接続する際のプロキシ認証方法についてです。

環境

Windows10
PSVersion:5.1.19041.3031
プロキシサーバの認証には予め設定されたユーザ名とパスワードが必要。

今回は最後にpythonのライブラリをpip installするので、python3もインストール済みとします。

Profileのセット前準備

忘れがちですが、まずPowerShellを管理者権限で起動します。
PowerShellのプロキシに関する設定はMicrosoft.PowerShell_profile.ps1での記述が反映されるようになっています。
パスはWrite-Host $PROFILEで確認できます。

> Write-Host $PROFILE
C:\Users\hogehoge\ドキュメント\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

ただし、Write-Hostで出力されるパスは設定ファイルを格納すべきフォルダを示しているだけです。
ですので、この段階では実際にエクスプローラーでアクセスしてみても、ファイルは見つかりません。
PowerShell上でもtest-pathで実際にファイルが実在するか確認することができます。
下記の出力では、profileファイルは存在していないことになります。

> test-path $PROFILE
False

PowerShellのスクリプト実行許可

というわけで、Write-Hostで指定されているディレクトリに実際にprofileファイルを作成しますが、その前にPowerShellにスクリプトファイルの実行を許可する必要があります。
Get-ExecutionPolicyでポリシーを確認して、下記のように表示されたら、現在PowerShellでのスクリプト実行は禁止されている状態にあります。

> Get-ExecutionPolicy
Restricted

ちなみに、このままprofileファイルを作成しようとすると、下記のようなエラーが出ます。

.\hogehoge.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル DC\hogehoge.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(http://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ .\hogehoge.ps1
+ ~~~~~~~~~~
+ CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

スクリプト実行のポリシーは下記コマンドで許可できます。
「実行ポリシーを変更しますか?」と表示されますので、「[Y]はい」を選択してください。

Set-ExecutionPolicy RemoteSigned

profileのセット

Write-Host で指定されているディレクトリに実際にprofileファイルを作成し、再度test-pathでファイルが実在するかを確認します。

> new-itme -path $profile -itmetype file -force
> test-path $PROFILE
True

Profileにプロキシ設定を記述

作成したprofileファイルをVScodeなりのエディタで開き、プロキシ設定に関する記述を書いていきます。

# profile読み込み確認
Get-Host

# 個別の認証情報
$proxyUser = "<USERNAME>"
$proxyPassword = "<PASSWORD>"
$proxyhost = "<HOSTNAME>:<PORTNUMBER>"

# 環境変数
$proxyAddressWithAuthenticattion = "http://$($proxyUser):$($proxy$password)@$($proxyhost)"
$env:http_proxy = $proxyAddressWithAuthenticattion
$env:https_proxy = $proxyAddressWithAuthenticattion
$env:ftp_proxy = $proxyAddressWithAuthenticattion

# クレデンシャル設定
$passwordSecure = ConvertTo-SecureString $proxyPassword -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential $proxyUser, $passwordSecure
$proxy = New-Object System.Net.WebProxy "http://$($proxyhost)/"
$proxy.Credentials = $creds
[System.Net.WebRequest]::DefaultWebProxy = $proxy

# 個別の認証情報のプロキシ認証に関係する情報を記載していきます。
作成できましたら、PowerShellを再起動します。管理者権限もお忘れなく。
ここまでで、プロキシ認証作業は完了です。

pip install でプロキシ認証されているか確認

当初の目的であるpythonのライブラリをインストールして、プロキシ認証ができているかを確認します。

> pip install openpyxl

これでインストールができましたら、PowerShellでプロキシ認証できていることを確認できたことになります。

参照

2
0
1

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?