PowerShellギャラリーで公開されているモジュールを、インターネットに疎通のない環境にインストールしたいといった事があるかもしれません。
この場合、どのような手段でインストールできるのか確認してみます。
PowerShellギャラリーからのモジュールインストールについて
PowerShellではInstall-Moduleコマンドレットを使い、PowerShellギャラリーで公開されているモジュールを簡単にインストールする事ができます。
ただし利用するためには上記ページにあるようなネットワーク要件を満たす必要があります。
このため本記事では、インターネットに疎通できない環境へPowerShellギャラリーからモジュールを持ち込むことについて解説します。
なお本記事ではインターネットに疎通できない環境として、RDPでクリップボード共有はできるがインターネット接続のないEC2インスタンスを用意し、ここにモジュールを持ち込みインストールする方法について説明します。
参照ドキュメント
今回インストールする環境とインストールモジュール
- Windows Server 2022(AWS上のEC2)
- ImportExcel 7.8.9
- Windows PowerShell 5.1.20348.2582
モジュールダウンロード と ブロックの許可
ドキュメントを参照し、手順を進めていきます。
PowerShell Gallery ImportExcel
まずはインターネットにアクセスできる環境からPowerShell Galleryのサイトにアクセスし、Manual Download
タブからDownload the raw nupkg file
をダウンロードします。
ダウンロードしたファイルのプロパティを確認すると、ファイルがブロックされている記述が表示されます。
まずはこちら許可にチェックをいれてOKを選択し、ブロック設定を解除します。
※参照しているドキュメント上ではこちらUnblock-File
コマンドレットで許可しています。
nupkgファイルの展開
ダウンロードしてきたnupkgについては実体はzip形式となるため、拡張子をnupkgからzipに変更して展開します。
今回、importexcel.7.8.9.zipをimportexcel.7.8.9というフォルダ配下に展開しました。
フォルダ名の変更
ドキュメントには既定のフォルダー名は通常、<name>.<version>
と記載があり、今回展開したフォルダについても、nameがimportexcelとなっており、versionが7.8.9となっている事がわかります。
このためフォルダをだけに変更すればよいので、今回はimportexcel.7.8.9からimportexcelに名前の変更を行います。
フォルダを配置する
今回、EC2上にインターネットへアクセスできない環境を用意し、そちらにフォルダを配置します。
なお今回、インストールするEC2環境は、RDPで疎通でき、かつ、クリップボード共有を有効にしているため、モジュールをローカル端末からクリップボード経由でコピーして配置しています。
なおフォルダのコピー先については、環境変数PSModulePathで定義されているフォルダ内に配置します。
配置先のEC2インスタンスで環境変数の確認を行うと、下記の3つのフォルダパスが定義されていました。
- C:\Users\Administrator\Documents\WindowsPowerShell\Modules
- C:\Windows\system32\WindowsPowerShell\v1.0\Modules
- C:\Program Files\WindowsPowerShell\Modules
今回は、C:\Users\Administrator\Documents\WindowsPowerShell\Modules
にフォルダを配置します。
なお該当環境では、そもそもこのパスが存在していなかったためパスから作成し配置しました。
import-moduleで読み込んでみる
Import-Module importexcel
を実行すると、特に問題なくモジュールがよみこまれます。
せっかくなのでimportExcelサイトにあるサンプルを実行してみる
$data = ConvertFrom-Csv @"
Region,State,Units,Price
West,Texas,927,923.71
North,Tennessee,466,770.67
East,Florida,520,458.68
East,Maine,828,661.24
West,Virginia,465,053.58
North,Missouri,436,235.67
South,Kansas,214,992.47
North,North Dakota,789,640.72
South,Delaware,712,508.55
"@
$data | Export-Excel .\salesData.xlsx
上記サイトにあるサンプルを実行して軽く動かしてみます。
ファイルが出力されました。
ファイルをexcelがインストールされている端末にコピーして開いてみると、画像のようなエクセルが表示され正常にファイル作成されていました。
今回、目的とするimportExcelは上記手順で問題なくインストールされたようです。
総評
そもそもインターネットに疎通できないように制限している環境というのは。
それなりの理由があるからインターネットへの疎通を制限しているだと思います。
そのような環境にインターネットで公開されているモジュールをインストールするケースは稀かと思います。
また安易に持ち込むべきでもないはずですので、どうしても持ち込む必要が出てきた場合はモジュールについて問題ないかはそれなりの判断にはなるかと思います。
ただいざいうときに備えて、PowerShellではこのような方法でPowerShellギャラリーにて公開されているモジュールをオフライン環境に持ち込むことができるって事は認識しておいてよいかと思います。