PowerShell Gallery からモジュールをインストールするために必要な設定

Last Update: feedback 共有

本記事は、マイクロソフト社員によって公開されております。

こんにちは、Windows サポートチームの中森です。

PowerShell Gallery からモジュールをダウンロードする際には注意すべきいくつかの設定がございます。
今回は、そんなインストール時に必要な設定について、お悩みを解決する方法をご紹介しますので参考にいただけますと幸いです。

はじめに

Install-Module は PowerShell Gallery から、指定されたモジュールを検索、ダウンロード、インストールを行うコマンドレットです。
Install-Module 実行時にエラーが発生する場合、多くの要因は通信エラーとなりますので、後述の設定にてダウンロードが可能となるかどうかご確認ください。

<通信エラー時に表示されるエラー メッセージの一例>

1
2
3
4
5
6
7
8
PS> Install-Module -Name <モジュール名>
PackageManagement\Install-PackageProvider : プロバイダー 'NuGet' について、指定された検索条件に一致するものが見つかりませんでした。パッケージ プロバイダーに
'PackageManagement' タグと 'Provider' タグが必要です。指定されたパッケージにこれらのタグがあるかどうかを確認してください。
発生場所 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7468 文字:21
+ ... $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-PackageProvider]、Exception
+ FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackageProvider

ご確認いただきたい設定

Install-Module の実行時にエラーが発生した場合、まずは、以下の 2 点をご確認ください。

1. プロキシ サーバー等で、必要なエンドポイントが制限されていないか

Install-Module コマンドレット実行時、対象のモジュールの検索やダウンロードのため、以下のエンドポイントへの接続が必要となります。
プロキシ サーバーや、ファイアウォール等で接続が許可されていない場合、接続を許可してからコマンドレットを実行してみてください。

  • psg-prod-centralus.azureedge.net : CDN (Content Delivery Network) ホスト名
  • psg-prod-eastus.azureedge.net : CDN (Content Delivery Network) ホスト名
  • az818661.vo.msecnd.net : CDN (Content Delivery Network) ホスト名
  • devopsgallerystorage.blob.core.windows.net : ストレージ アカウントのホスト名
  • *.powershellgallery.com : Web サイト
  • go.microsoft.com : リダイレクト サービス
  • onegetcdn.azureedge.net : PowerShellGet/PackageManagement の NuGet プロバイダーのブートストラップ

2. Install-Module 実行前に、権限やアクセス許可、 TLS 1.2 利用を設定する

プロキシ等で、必要なエンドポイントへの接続を許可しても、 Install-Module コマンドレットが成功しない場合、
PowerShell Gallery への明示的なアクセス許可や、接続方式を TLS 1.2 に変更してからコマンドレットを実行してみてください。
以下に、コマンドレット実行までにお試しいただきたい、実行例をご案内いたします。

1
2
3
4
5
6
7
8
9
10
11
//現在のプロセスに限り、一時的に PowerShell 実行ポリシーを緩和します。
PS> Set-ExecutionPolicy Unrestricted -Scope Process -Force

// PSGallery への接続を明示的に許可します
PS> Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted

// TLS バージョンを明示的に指定します
PS> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

// ご要望のコマンドを実行します。
PS> Install-Module -Name <モジュール名>

上記 2 点の確認でも事象が解消されない場合は、オフラインでのモジュール導入をご検討いただけますと幸いでご合います。

オフラインでモジュールを導入する方法

Install-Module は上記までに説明した通り、接続するためのエンドポイントや、接続方法など考慮すべきポイントが多くあります。
日本の Enterprise で、ご利用の場合には、接続制限や設定変更を行えない場合もあるかと思います。

そんなとき、 Install-Module で対象モジュールの検索やダウンロードを手動で行い、インストールする方法もございます。
以下に、手順例をご紹介しますので、セキュリティ上、接続許可を変更できない場合や、設定変更を行ってもエラーとなる場合に、
お試しいただけますと幸いです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1. PowerShell Gallery のページにアクセスします。

 PowerShell Gallery
 - https://www.powershellgallery.com/

2. 導入予定のモジュール名を検索し、目的のモジュールが公開されているページにアクセスします。

3. Installation Options 欄の"Manual Download" をクリックします。

4. [Download the raw nupkg file] をクリックして nupkg パッケージをダウンロードします。

5. ページ内の "Package Details" をクリックし、"Dependencies" 欄の依存するモジュールを確認します。

6. "Dependencies" に記載されている全モジュールの nupkg パッケージをダウンロードします。

7. ダウンロードしたファイルの拡張子を .nupkg から .zip に変更し、Zip ファイルを展開します。

8. フォルダー名からバージョン情報を削除します。

 ※ フォルダー名とモジュール名を一致させる必要があるため、
 バージョン情報以外のフォルダー名は変更しないようにご注意ください。

9. 全てのフォルダーを "C:\Program Files\WindowsPowerShell\Modules" フォルダー配下に配置します。

10. PowerShell を起動し、スクリプトの実行を許可したうえで Import-Module コマンドレットを実行します。

 実行例)
Set-ExecutionPolicy bypass -Scope Process -Force
Import-Module <モジュール名>

11. 導入したモジュールのコマンドレットが使用可能かどうか確認します。

以上の情報が、 Install-Module を実行したい、ご利用者の皆様の一助となりますと幸いです。

関連記事

PowerShell Gallery
https://www.powershellgallery.com/

PowerShell ギャラリーの概要
https://docs.microsoft.com/ja-jp/powershell/scripting/gallery/getting-started?view=powershell-7.2

Install-Module コマンドレットのトラブルシューティング
https://docs.microsoft.com/ja-jp/powershell/scripting/gallery/how-to/getting-support/troubleshooting-cmdlets?view=powershell-7

PowerShell Gallery TLS Support について PowerShell 開発 Team の blog 情報
https://devblogs.microsoft.com/powershell/powershell-gallery-tls-support/

パッケージの手動ダウンロード
https://docs.microsoft.com/ja-JP/powershell/scripting/gallery/how-to/working-with-packages/manual-download?view=powershell-7.1

PowerShell モジュールをインポートする
https://docs.microsoft.com/ja-jp/powershell/scripting/developer/module/importing-a-powershell-module?view=powershell-7.1

本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。