1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShellギャラリーで公開されているモジュールをオフライン環境にインストールしてみる

Posted at

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をダウンロードします。

image.png

ダウンロードしたファイルのプロパティを確認すると、ファイルがブロックされている記述が表示されます。

まずはこちら許可にチェックをいれてOKを選択し、ブロック設定を解除します。
※参照しているドキュメント上ではこちらUnblock-Fileコマンドレットで許可しています。

image.png

nupkgファイルの展開

ダウンロードしてきたnupkgについては実体はzip形式となるため、拡張子をnupkgからzipに変更して展開します。

今回、importexcel.7.8.9.zipをimportexcel.7.8.9というフォルダ配下に展開しました。

image.png

フォルダ名の変更

ドキュメントには既定のフォルダー名は通常、<name>.<version>と記載があり、今回展開したフォルダについても、nameがimportexcelとなっており、versionが7.8.9となっている事がわかります。

このためフォルダをだけに変更すればよいので、今回はimportexcel.7.8.9からimportexcelに名前の変更を行います。

image.png

フォルダを配置する

今回、EC2上にインターネットへアクセスできない環境を用意し、そちらにフォルダを配置します。

なお今回、インストールするEC2環境は、RDPで疎通でき、かつ、クリップボード共有を有効にしているため、モジュールをローカル端末からクリップボード経由でコピーして配置しています。

なおフォルダのコピー先については、環境変数PSModulePathで定義されているフォルダ内に配置します。

image.png

配置先の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にフォルダを配置します。

なお該当環境では、そもそもこのパスが存在していなかったためパスから作成し配置しました。

image.png

import-moduleで読み込んでみる

Import-Module importexcelを実行すると、特に問題なくモジュールがよみこまれます。

image.png

せっかくなのでimportExcelサイトにあるサンプルを実行してみる

Create a spreadsheet

$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

上記サイトにあるサンプルを実行して軽く動かしてみます。

image.png

ファイルが出力されました。

image.png

ファイルをexcelがインストールされている端末にコピーして開いてみると、画像のようなエクセルが表示され正常にファイル作成されていました。

今回、目的とするimportExcelは上記手順で問題なくインストールされたようです。

総評

そもそもインターネットに疎通できないように制限している環境というのは。

それなりの理由があるからインターネットへの疎通を制限しているだと思います。

そのような環境にインターネットで公開されているモジュールをインストールするケースは稀かと思います。

また安易に持ち込むべきでもないはずですので、どうしても持ち込む必要が出てきた場合はモジュールについて問題ないかはそれなりの判断にはなるかと思います。

ただいざいうときに備えて、PowerShellではこのような方法でPowerShellギャラリーにて公開されているモジュールをオフライン環境に持ち込むことができるって事は認識しておいてよいかと思います。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?