色々なプロキシサーバー設定（Windows 11対象）

今の職場では、プロキシサーバーの背後に (認証なし) いるため、**Windows Studio 2022** の **Node.js** 、**Nuget** などを使用する方法を見つける必要がありました。特に、プロジェクトで「[Tailwind CSS VS 2022 Editor Support](https://github.com/theron-wang/VS2022-Editor-Support-for-Tailwind-CSS)」拡張機能に追加されたメニュー項目から **Tailwindcss** をセットアップできますがプロキシの背後にいる場合はそのままでは機能しません。

## Git
1. HTTPとHTTPSのプロキシを設定
    ```
    git config --global http.proxy http://＜プロキシサーバーのURL＞:＜ポート＞
    git config --global https.proxy https://＜プロキシサーバーのURL＞:＜ポート＞
    ```
2. 認証が必要の場合はHTTPとHTTPSのプロキシを設定
    ```
    git config --global http.proxy http//:＜ユーザー名＞:＜パスワード＞@＜プロキシサーバーのURL＞:＜ポート＞
    git config --global https.proxy https://＜ユーザー名＞:＜パスワード＞@＜プロキシサーバーのURL＞:＜ポート＞
    ```

## Node.jsのグローバルプロキシ設定
1. HTTPとHTTPSのプロキシを設定
    ```
    npm config set proxy http://＜プロキシサーバーのURL＞:＜ポート＞
    npm config set https-proxy https://＜プロキシサーバーのURL＞:＜ポート＞
    ```
2. 認証が必要の場合はHTTPとHTTPSのプロキシを設定
    ```
    npm config set https-proxy https://＜ユーザー名＞:＜パスワード＞@＜プロキシサーバーのURL＞:＜ポート＞
    npm config set https-proxy https://＜ユーザー名＞:＜パスワード＞@＜プロキシサーバーのURL＞:＜ポート＞
    ```
3. プロキシ設定の確認
    ```
    npm config list
    ```
## Nugetのグローバルプロキシ設定
Windowsでは、Nugetの`NuGet.Config`のグローバル設定ファイルは通常`C:\Users\[ユーザー名]\AppData\Roaming\NuGet\NuGet.Config`にあります：
1. `NuGet.Config`を開いて
    ```
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
      </packageSources>
    </configuration>
    ```
2. HTTPとHTTPSのプロキシサーバーのURLとポートの情報を入力：
    ```
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <config>
        <add key="http_proxy" value="http://＜プロキシサーバーのURL＞:＜ポート＞" />
        <add key="https_proxy" value="https://＜プロキシサーバーのURL＞:＜ポート＞" />
    　</config>
      <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
      </packageSources>
    </configuration>
    ```
3. 必要でしたら、HTTPとHTTPSのプロキシサーバーのユーザー名とパスワードの情報も入力：
    ```
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <config>
        <add key="http_proxy" value="http://＜プロキシサーバーのURL＞:＜ポート＞" />
        <add key="http_proxy.user" value="＜ユーザー名＞" />
        <add key="http_proxy.password" value="＜パスワード＞" />
        <add key="https_proxy" value="https://＜プロキシサーバーのURL＞:＜ポート＞" />
        <add key="https_proxy.user" value="＜ユーザー名＞" />
        <add key="https_proxy.password" value="＜パスワード＞" />
    　</config>
      <packageSources>
        <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
      </packageSources>
    </configuration>
    ```
## PowerShellのグローバルプロキシ設定
Windowsでは、PowerShellの`Microsoft.PowerShell_profile.ps1`のユーザープロファイルのファイルは通常`C:\Users\[ユーザー名]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1`にあります：
1. 次のコマンドを実行して、プロファイルがすでに存在するかどうかを確認します：
    ```
    Test-Path $PROFILE
    ```
2. 上記のコマンドは、プロファイルが存在する場合は **True** を返し、存在しない場合は **False** を返し、次を使用して新しいプロファイルを作成できます：
    ```
    New-Item -Path $PROFILE -Type File -Force
    ```
3. `Microsoft.PowerShell_profile.ps1`を開いて
4. 下記のようにプロキシの設定を入力：
    ```
    $proxy = "http://＜プロキシサーバーのURL＞:＜ポート＞"
    $proxyAddress = New-Object System.Uri($proxy)
    [System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy($proxyAddress, $true)
    ```
5. 認証が必要の場合は下記のようにプロキシの設定を入力：
    ```
    $proxy = "http://＜プロキシサーバーのURL＞:＜ポート＞"
    $proxyCred = New-Object System.Management.Automation.PSCredential("＜ユーザー名＞", (ConvertTo-SecureString "＜パスワード＞" -AsPlainText -Force))
    [System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy($proxy, $true)
    [System.Net.WebRequest]::DefaultWebProxy.Credentials = $proxyCred
    ```
    ※　けどPowerShellを開くとエラー発生しま。エラーメッセージによると、PowerShellスクリプトの実行ポリシーが制限されているため、Microsoft.PowerShell_profile.ps1ファイルを読み込むことができないようです。この問題を解決するためには、スクリプト実行ポリシーを変更する必要があります。
    ```
    User
     : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\SS873\Documents\WindowsPowerShell\Microso
    ft.PowerShell_profile.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft
    .com/fwlink/?LinkID=135170) を参照してください。
    発生場所 行:1 文字:3
    + . 'C:\Users\SS873\Documents\WindowsPowerShell\Microsoft.PowerShell_pr ...
    +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess
    ```
6. スタートメニューで「PowerShell」と入力し、右クリックして「管理者として実行」を選択。
7. 次のコマンドを入力して、現在の実行ポリシーを確認：
    ```
    > Get-ExecutionPolicy
    Restricted
    ```
8. スクリプトを実行できるようにするために、実行ポリシーを「RemoteSigned」または「Unrestricted」に設定できますがセキュリティを考慮して、「Unrestricted」より「RemoteSigned」の方が推奨されますので「RemoteSigned」に設定、「ｙ」で確認：
    ```
    > Set-ExecutionPolicy RemoteSigned
    
    実行ポリシーの変更
    実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
    のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
    で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
    [Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y
    ```
9. 再度 Get-ExecutionPolicy コマンドを実行して、変更が適用されたことを確認
    ```
    > Get-ExecutionPolicy
    RemoteSigned
    ```
## Windows 11のプロキシ設定
1. スタートボタンを右クリックして「設定」を選択またはWindowsキー+Iを押下。
2. 設定メニューのサイドバーから「ネットワークとインターネット」を選択し、「ネットワークとインターネット」に移動。
3. 下にスクロールして、ネットワークとインターネット設定の「プロキシ」をクリック。
4. 「手動プロキシ　セットアップ」での「編集」ボタンを押下。
5. 「オン」を選択。
6. 「プロキシIPアドレス」と「ポート」を入力。
7. 「保存」ボタンを押下。