【初心者向け】PowerShell「Import-Module」の使い方ガイド|モジュールの読み込みとエラー対処まで徹底解説

Windows

PowerShellを使っていると、ある日突然「コマンドが見つかりません」というエラーに出くわすことがあります。

実はその原因、多くの場合は必要なモジュールが読み込まれていないこと。

PowerShellでは、便利なコマンドや機能は「モジュール」という単位で提供されています。

それらを使うには、まず「Import-Module」で明示的に読み込む必要があるのです。

この記事では、「Import-Module」の基本から使い方、よく使うモジュール一覧、エラー時の対処法、モジュールの自動読み込み設定まで、実践的に解説します。

スポンサーリンク

Import-Moduleとは?

Import-Moduleは、PowerShellモジュール(.psm1、.dllなど)を読み込むコマンドです。

読み込んだモジュール内の関数やコマンドレットを、現在のセッション内で使えるようにします。

モジュールとは簡単に言うと、PowerShellの機能を拡張するパッケージのようなものです。

基本的なPowerShellでは使えない特別な機能を追加してくれます。

たとえば、Active Directory管理やAzure操作などの専門的な機能は、モジュールを読み込むことで使えるようになります。

基本的な使い方

構文

Import-Module -Name モジュール名

例:Active Directoryモジュールを読み込む

Import-Module -Name ActiveDirectory

→ 読み込みに成功すると、Get-ADUser などのコマンドが使えるようになります。

モジュールの確認方法

現在読み込まれているモジュールを確認するには:

Get-Module

利用可能な(インストール済みだが読み込まれていない)モジュールを確認するには:

Get-Module -ListAvailable

よく使うオプション

-Force(すでに読み込まれていても再読み込み)

モジュールが更新された場合などに役立ちます:

Import-Module -Name ActiveDirectory -Force

-Verbose(読み込み時の詳細情報を表示)

読み込み過程の詳細を表示してくれるので、トラブルシューティングに便利:

Import-Module -Name Az -Verbose

-Scope(スクリプト単位での読み込み)

モジュールの影響範囲を限定します:

Import-Module -Name MyModule -Scope Local

-Prefix(コマンドに接頭辞を付ける)

名前の衝突を避けるために、モジュールのコマンドに接頭辞を付けられます:

Import-Module -Name PSReadLine -Prefix RL

これで、例えば Get-PSReadLineOptionGet-RLPSReadLineOption として使えるようになります。

よく使うモジュール一覧(例)

モジュール名主な用途主なコマンド例
ActiveDirectoryADユーザー/グループ管理Get-ADUser, New-ADGroup
AzAzureリソース管理Get-AzVM, New-AzResourceGroup
PSReadLineコマンド補完・履歴などの強化Get-PSReadLineOption, Set-PSReadLineOption
Microsoft.PowerShell.ArchiveZIPファイルの操作Compress-Archive, Expand-Archive
SqlServerSQL Serverへの接続・操作Invoke-SqlCmd, Backup-SqlDatabase
DISMWindows OSのサービス管理Get-WindowsOptionalFeature
PKI証明書管理Get-Certificate, New-SelfSignedCertificate
VMware.PowerCLIVMware環境の管理Get-VM, New-VM

モジュールが見つからないときの対処法

モジュールがインストールされていない場合

PowerShell Galleryからインストール可能です:

Install-Module -Name モジュール名

初回のみ NuGet プロバイダーのインストール確認が出る場合があります。

AdminユーザーでもScope CurrentUserを指定してインストールする場合:

Install-Module -Name モジュール名 -Scope CurrentUser

モジュールパスが通っていない場合

モジュールの保存先を確認してパスを指定:

Import-Module "C:\MyModules\Custom.psm1"

モジュールパスを確認する

PowerShellがモジュールを探す場所は環境変数に設定されています:

$env:PSModulePath

新しいパスを追加するには:

$env:PSModulePath = $env:PSModulePath + ";C:\MyCustomModules"

モジュールを自動的に読み込む方法

PowerShell 3.0以降では、多くのモジュールが自動読み込みに対応しています。

コマンドを実行すると、そのコマンドを含むモジュールが自動的に読み込まれます。

それでも自動読み込みされない場合は、プロファイルスクリプトに追加することで毎回自動で読み込ませることが可能です。

例:プロファイルに追記

プロファイルを開く:

notepad $PROFILE

※プロファイルがない場合は作成する必要があります:

if (!(Test-Path -Path $PROFILE)) {
    New-Item -ItemType File -Path $PROFILE -Force
}
notepad $PROFILE

以下のように記述:

# 常に読み込みたいモジュールをここに追加
Import-Module -Name ActiveDirectory
Import-Module -Name Az
Write-Host "必要なモジュールを読み込みました"

これで、PowerShellを起動するたびに指定したモジュールが自動的に読み込まれます。

よくあるエラーと対処法

エラー:モジュールが見つかりません

Import-Module : モジュール 'モジュール名' を読み込めませんでした。

対処法

  • Install-Module -Name モジュール名 でインストール
  • $env:PSModulePath でモジュールパスを確認
  • 管理者権限でPowerShellを実行

エラー:Import-Moduleに失敗しました

Import-Module : モジュール 'モジュール名' の読み込みに失敗しました。

対処法

  • モジュールが壊れている可能性 → 再インストールや-Forceで再読み込み
  • 依存関係の確認:Get-Module -Name モジュール名 -ListAvailable | Select-Object -ExpandProperty RequiredModules

エラー:スクリプトの実行が制限されています

...ps1 ファイルを読み込めません。このシステムではスクリプトの実行が無効になっているためです。

対処法:ポリシーを確認・変更

# 現在のポリシーを確認
Get-ExecutionPolicy -List

# ポリシーを変更(一般的に安全な設定)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Import-Moduleが活躍するシーン

ADユーザーのバッチ処理

Import-Module ActiveDirectory
Get-ADUser -Filter * -Properties LastLogonDate | 
    Where-Object { $_.LastLogonDate -lt (Get-Date).AddDays(-90) } |
    Select-Object Name, LastLogonDate |
    Export-Csv -Path "C:\Inactive_Users.csv"

Azureの自動デプロイ

Import-Module Az
Connect-AzAccount
New-AzResourceGroup -Name "MyResourceGroup" -Location "JapanEast"
# リソース展開のコードなど

SQLデータベースのバックアップスクリプト

Import-Module SqlServer
Backup-SqlDatabase -ServerInstance "SQLServer1" -Database "MyDatabase" -BackupFile "C:\Backups\MyDatabase_$(Get-Date -Format 'yyyyMMdd').bak"

独自モジュールの読み込み・配布

# モジュールの作成例
New-ModuleManifest -Path "C:\MyModules\MyTools\MyTools.psd1" -Author "自分の名前" -Description "便利な自作ツール集"

# 読み込み
Import-Module "C:\MyModules\MyTools\MyTools.psd1"

まとめ

PowerShellでは、必要な機能をモジュールとして読み込むことで、必要な機能だけを効率よく扱うことができます。

そのためのキーコマンドが「Import-Module」。

ポイント:

  • Import-Moduleはモジュールを読み込んで機能を拡張するコマンド
  • 読み込みエラーはInstall-Moduleやパス指定で対処可能
  • -Force-Verboseオプションでより柔軟に運用
  • プロファイルスクリプトで自動読み込みも可能
  • モジュールのインストールと読み込みは異なる操作

今後、PowerShellでより高度な自動化を目指す方にとって、Import-Moduleは確実に押さえておくべき基本スキルです。

モジュールを理解することで、PowerShellの可能性が大きく広がります。

コメント

タイトルとURLをコピーしました