🗺
[PowerShell]指定したモジュールの導入有無を確認するFunction
概要
PowerShellは、モジュールを追加(導入・インストール)することで、機能が拡張されます。
拡張される機能はインストールするモジュールによって異なります。
今回は、PowerShellスクリプトにおいて、指定したモジュールが導入されているかBool
でチェックするFunctionを自作したので紹介。
この記事のターゲット
- PowerShellユーザーの方
- PowerShellスクリプトなどで指定したモジュールの導入有無を確認したい方
対応方法
指定したモジュール名で導入有無をチェックするFunction
チェックのみ(Get-Module
)だけであれば、管理者権限は不要。
モジュールの導入有無を確認
function Test-ModuleInstalled {
param (
[System.String]$ModuleName
)
$moduleInstalled = $false
# モジュール情報を取得
$module = (Get-Module -ListAvailable -Name $ModuleName)
# モジュールが導入済みの場合
if ($null -ne $module) {
$moduleInstalled = $true
}
return $moduleInstalled
}
未導入と判定した場合にインストール処理をするコード
上記のFunctionを使用しチェックの結果、モジュールが未導入と判断した場合のみインストール処理を実行するコードは下記の通り。
このコードの場合、モジュールのインストールを伴う為、管理者権限が必要 です。
未導入の場合に該当モジュールをインストールするコード
# ImportExcel モジュールのインストール
$moduleName = 'ImportExcel'
if (-Not(Test-ModuleInstalled $moduleName)) {
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# 管理者権限が必要
Install-Module -Name $moduleName -Scope CurrentUser -Force
Write-Host "$($moduleName) モジュールをインストールしました。"
} else {
Write-Host "$($moduleName) モジュールは既にインストールされています。"
}
導入済みと判定した場合にアンインストール処理をするコード
上記、インストール処理の真逆の処理です。
これもアンインストール実行時に 管理者権限が必要 となります。
導入済みの場合に該当モジュールをアンインストールするコード
# ImportExcel モジュールのインストール
$moduleName = 'ImportExcel'
if (Test-ModuleInstalled $moduleName) {
# 管理者権限が必要
Uninstall-Module -Name $moduleName -AllVersions
Write-Host "$($moduleName) モジュールをアンインストールしました。"
} else {
Write-Host "$($moduleName) モジュールは見つかりませんでした。"
}
まとめ
- 指定したモジュール名が導入されているか戻り値「
bool
($True
or$False
)」で確認できるFunctionを自作できた - 作成したFunctionで判定した結果が未導入(
$False
)でインストールコマンド(Install-Module
)を実行する場合は、管理者権限が必要 - 作成したFunctionで判定した結果が導入済み(
$True
)でアンインストールコマンド(Uninstall-Module
)を実行する場合も、管理者権限が必要
関連記事
Discussion