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-PSReadLineOption
が Get-RLPSReadLineOption
として使えるようになります。
よく使うモジュール一覧(例)
モジュール名 | 主な用途 | 主なコマンド例 |
---|---|---|
ActiveDirectory | ADユーザー/グループ管理 | Get-ADUser , New-ADGroup |
Az | Azureリソース管理 | Get-AzVM , New-AzResourceGroup |
PSReadLine | コマンド補完・履歴などの強化 | Get-PSReadLineOption , Set-PSReadLineOption |
Microsoft.PowerShell.Archive | ZIPファイルの操作 | Compress-Archive , Expand-Archive |
SqlServer | SQL Serverへの接続・操作 | Invoke-SqlCmd , Backup-SqlDatabase |
DISM | Windows OSのサービス管理 | Get-WindowsOptionalFeature |
PKI | 証明書管理 | Get-Certificate , New-SelfSignedCertificate |
VMware.PowerCLI | VMware環境の管理 | 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の可能性が大きく広がります。
コメント