PowerShell は、関数をモジュールとして登録すると、システム提供のコマンドレットと同様に使用することが可能です
ちょっとしたツールを関数として書いて、モジュールとして登録しておくとなかなか便利なのでお勧めです
モジュールとして登録するには、以下を満たせば OK です
・関数を .psm1 に書く
・.psm1と同じ名前のディレクトリをモジュール ディレクトリに作成する
・作成したディレクトリに.psm1 をコピーする
たったこれだけです
.psm1 には複数の関数を書くことができます
例えば TestModule.psm1 を作成したとします
TestModule.psm1
|
次に、モジュール ディレクトリに新たなディレクトリ TestModule を作成します
Windows PowerShell であれば、以下がデフォルトのローカル モジュール ディレクトリとなっています
(「ローカル モジュール
ディレクトリ」は正式名ではなく、便宜上僕が名付けたユーザーごとのモジュール ディレクトリです)
C:\Users\ユーザー名\Documents\WindowsPowerShell\Modules
ここに TestModule を作成し、TestModule.psm1 をコピーすれば、モジュールの登録完了です
TestFunc1 TestFunc2 が通常のコマンドレットと同様に使えるようになります
ローカル モジュール ディレクトリは、Windows と Windows 外で異なっています
・Windows
$PROFILE ディレクトリ
(MS 公開ドキュメントは違う取得してます)
・Windows 以外
$HOME/.local/share/powershell/Modules
参考
PSModulePath について - PowerShell |
Microsoft Learn
Windows 環境か、Windows 外かを判別するには、$PSVersionTable.Platform が 「Win32NT」(PowerShell)になっているか、値がセットされていない(Windows PowerShell)かで判定できます
これを踏まえ、インストーラーを .ps1 で書くとこんな感じになります
install.ps1
|
アンインストールは、作成したモジュールディレクトリを削除するだけなので、以下のように作ることができます
uninstall.ps1
|
GitHub 上に、公開リポジトリでモジュールを書いていれば、リポジトリの Clone 不要で直接モジュールインストールをすることができます
リポジトリに、.psm1、install.ps1、uninstall.ps1 を置くと、以下 URL からモジュールのダウンロードができるようになります
https://raw.githubusercontent.com/GitHubユーザー名/リポジトリ名/master/モジュール
例えば、GitHubユーザー名が「HogeHoge」、リポジトリ名が「TestModule」で、モジュール名も「TestModule」の場合、以下からダウンロードできます
https://raw.githubusercontent.com/HogeHoge/TestModule/master/TestModule.psm1
https://raw.githubusercontent.com/HogeHoge/TestModule/master/install.ps1
https://raw.githubusercontent.com/HogeHoge/TestModule/master/uninstall.ps1
ダウンロードは、Invoke-WebRequest を使えば良いので、プロファイル ディレクトリ(~/)に各ファイルをダウンロードするのであれば以下のように書くことができます
$ScriptName = "リポジトリ名" $GitHubName = "GitHubユーザー名" $Module = $ScriptName + ".psm1" $Installer = "Install" + $ScriptName + ".ps1" $UnInstaller = "UnInstall" + $ScriptName + ".ps1" Invoke-WebRequest -Uri https://raw.githubusercontent.com/$GitHubName/$ScriptName/master/$Module -OutFile ~/$Module Invoke-WebRequest -Uri https://raw.githubusercontent.com/$GitHubName/$ScriptName/master/install.ps1 -OutFile ~/$Installer Invoke-WebRequest -Uri https://raw.githubusercontent.com/$GitHubName/$ScriptName/master/uninstall.ps1 -OutFile ~/$UnInstaller & ~/$Installer Remove-Item ~/$Module Remove-Item ~/$Installer |
これを PowerShell プロンプトにコピペすれば、GitHub から直接モジュールのインストールができます
Copyright © MURA All rights reserved.