PowerShellのモジュール(.psm1)をインストールするスクリプト

powershell コンピュータ
powershell
PowerShellのモジュールタイプのスクリプト(拡張子.psm1)を所定のフォルダに移動するスクリプトです。
ファイル名:Install-PSM1.sp1
フォルダの作成とファイルの移動をしているだけです。

param($targetPath = ".\Dummy.psm1")

$ErrorActionPrefence = "Stop"
Set-StrictMode -Version 2.0

$ps1Path = Join-Path ([Environment]::GetFolderPath('MyDocument')) 'WindowsPowerShell'
if (-not (Test-Path $ps1Path)) { mkdir $ps1Path | Out-Null }
$psm1Path = Join-Path $ps1Path 'Modules'
if (-not (Test-Path $psm1Path)) { mkdir $psm1Path | Out-Null }
$moduleName = [System.IO.Path]::GetFileNameWithoutExtension($targetPath)
$moduleDir = Join-Path $psm1Path $moduleName
if (-not (Test-Path $moduleDir)) { mkdir $moduleDir | Out-Null }
$modulePath = Join-Path $moduleDir ([System.IO.Path]::GetFileName($targetPath))

mv $targetPath $modulePath -Force
ファイル名:Dummy.psm1
スクリプトのテスト実行用のモジュールスクリプト

<#
.SYNOPSIS
 ダミー

.DESCRIPTION

.PARAMETER 
    
#>



# 
function Dummy {
    param($file="")
    return ("Dummy")
}


Export-ModuleMember -Function Dummy
PowerShellのスクリプトファイル(拡張子.ps1)は、実行する場合スクリプトファイルのパスを指定する必要があります。相対パスで記述すると若干短くなりますが、ファイルへのパスですので拡張子を省略することは出来ません。
Powershellスクリプトをモジュール(.psm1)にすることでパスや拡張子を省略した形でスクリプトを実行することが出来ます。PowerShellスクリプトをコマンドプロンプトにおける外部コマンドの様に呼び出すことが出来ます。
モジュール登録したDummy.psm1を実行

PS>Dummy
Dummy
モジュール(.psm1)にする場合、スクリプトの処理を一つの関数にまとめて、Export-ModuleMembarで関数を公開するようです。同名の関数(モジュール)を公開すると問題が発生しそうですので、モジュール名や関数名は真面目に決めた方が良さそうです。

コメント