システムにモジュールをインストールしたら、モジュールをインポートする必要があります。 インポートは、ユーザーが PowerShell セッションでそのモジュールにアクセスできるように、モジュールをアクティブ メモリに読み込むプロセスです。 PowerShell 2.0 では、Import-Module コマンドレットを呼び出して、新しくインストールした PowerShell モジュール インポートできます。 PowerShell 3.0 では、モジュール内のいずれかの関数またはコマンドレットがユーザーによって呼び出されたときに、PowerShell はモジュールを暗黙的にインポートできます。 どちらのバージョンも、PowerShell でモジュールを見つけることができる場所にモジュールをインストールすることを前提としています。詳細については、「PowerShell モジュールのインストール」を参照してください。 モジュール マニフェストを使用して、エクスポートするモジュールの部分を制限したり、Import-Module
呼び出しのパラメーターを使用してインポートするパーツを制限したりできます。
Snap-In のインポート (PowerShell 1.0)
PowerShell 1.0 にはモジュールが存在しませんでした。代わりに、スナップインを登録して使用する必要がありました。ただし、モジュールのインストールとインポートが一般的に簡単であるため、この時点でこのテクノロジを使用することはお勧めしません。 詳細については、「Windows PowerShell スナップインを作成する方法」を参照してください。
Import-Module を使用したモジュールのインポート (PowerShell 2.0)
PowerShell 2.0 では、適切な名前の Import-Module コマンドレットを使用してモジュールをインポートします。 このコマンドレットを実行すると、Windows PowerShell は、PSModulePath
変数で指定されたディレクトリ内で指定されたモジュールを検索します。 指定したディレクトリが見つかると、Windows PowerShell は、モジュール マニフェスト ファイル (.psd1
)、スクリプト モジュール ファイル (.psm1
)、バイナリ モジュール ファイル (.dll) の順にファイルを検索します。 検索にディレクトリを追加する方法の詳細については、「about_PSModulePath」を参照してください。
次のコードでは、モジュールをインポートする方法について説明します。
Import-Module myModule
myModule が PSModulePath
にあると仮定すると、PowerShell は myModule をアクティブ メモリに読み込みます。 myModule が PSModulePath
パスに配置されていない場合でも、PowerShell に見つける場所を明示的に指定できます。
Import-Module -Name C:\myRandomDirectory\myModule -Verbose
-Verbose
パラメーターを使用して、モジュールからエクスポートされる内容とアクティブ メモリにインポートされている内容を識別することもできます。 エクスポートとインポートの両方で、ユーザーに公開される内容が制限されます。違いは、可視性を制御するユーザーです。 基本的に、エクスポートはモジュール内のコードによって制御されます。 これに対し、インポートは Import-Module
呼び出しによって制御されます。 詳細については、以下の「インポートされるメンバー制限する」を参照してください。
モジュールの暗黙的なインポート (PowerShell 3.0)
Windows PowerShell 3.0 以降では、モジュール内のコマンドレットまたは関数がコマンドで使用されると、モジュールが自動的にインポートされます。 この機能は、PSModulePath 環境変数の値に含まれるディレクトリ内のすべてのモジュールで機能します。 ただし、モジュールを有効なパスに保存しない場合でも、前述の明示的な Import-Module オプションを使用してモジュールを読み込むことができます。
次のアクションは、"モジュールの自動読み込み" とも呼ばれるモジュールの自動インポートをトリガーします。
コマンドでのコマンドレットの使用。 たとえば、「
Get-ExecutionPolicy
」と入力すると、Get-ExecutionPolicy
コマンドレットを含む Microsoft.PowerShell.Security モジュールがインポートされます。Get-Command コマンドレットを使用してコマンドを取得します。 たとえば、「
Get-Command Get-JobTrigger
」と入力すると、Get-JobTrigger
コマンドレットを含む PSScheduledJob モジュールがインポートされます。 ワイルドカード文字を含むGet-Command
コマンドは検出と見なされ、モジュールのインポートはトリガーされません。Get-Help コマンドレットを使用して、コマンドレットのヘルプを取得します。 たとえば、「
Get-Help Get-WinEvent
」と入力すると、Get-WinEvent
コマンドレットを含む Microsoft.PowerShell.Diagnostics モジュールがインポートされます。
モジュールの自動インポートをサポートするために、Get-Command
コマンドレットは、モジュールがセッションにインポートされていない場合でも、インストールされているすべてのモジュールのすべてのコマンドレットと関数を取得します。 詳細については、Get-Command コマンドレットのヘルプ トピックを参照してください。
インポート プロセス
モジュールがインポートされると、モジュールの新しいセッション状態が作成され、System.Management.Automation.PSModuleInfo オブジェクトがメモリ内に作成されます。 セッション状態は、インポートされるモジュールごとに作成されます (これには、ルート モジュールと入れ子になったモジュールが含まれます)。 ルート モジュールからエクスポートされたメンバー (入れ子になったモジュールによってルート モジュールにエクスポートされたメンバーを含む) は、呼び出し元のセッション状態にインポートされます。
モジュールからエクスポートされるメンバーのメタデータには、ModuleName プロパティがあります。 このプロパティには、エクスポートしたモジュールの名前が設定されます。
警告
エクスポートされたメンバーの名前に未承認の動詞が使用されている場合、またはメンバーの名前に制限付き文字が使用されている場合は、Import-Module コマンドレットの実行時に警告が表示されます。
既定では、Import-Module コマンドレットはパイプラインにオブジェクトを返しません。 ただし、このコマンドレットは、インポートされる各モジュールの System.Management.Automation.PSModuleInfo オブジェクトを返すために使用できる PassThru パラメーターをサポートしています。 ホストに出力を送信するには、ユーザーは Write-Host コマンドレットを実行する必要があります。
インポートされるメンバーの制限
Import-Module コマンドレットを使用してモジュールをインポートすると、既定では、エクスポートされたすべてのモジュール メンバーがセッションにインポートされます。これには、入れ子になったモジュールによってモジュールにエクスポートされたすべてのコマンドが含まれます。 既定では、変数とエイリアスはエクスポートされません。 エクスポートされるメンバーを制限するには、モジュール マニフェストを使用します。 インポートされるメンバーを制限するには、Import-Module
コマンドレットの次のパラメーターを使用します。
関数: このパラメーターは、エクスポートされる関数を制限します。 (モジュール マニフェストを使用している場合は、FunctionsToExport キーを参照してください)。
` コマンドレットの: このパラメーターは、エクスポートされるコマンドレットを制限します (モジュール マニフェストを使用している場合は、CmdletsToExport キーを参照してください)。
変数: このパラメーターは、エクスポートされる変数を制限します (モジュール マニフェストを使用している場合は、VariablesToExport キーを参照してください)。
Alias: このパラメーターは、エクスポートされるエイリアスを制限します (モジュール マニフェストを使用している場合は、AliasesToExport キーを参照してください)。
こちらもご覧ください
Windows PowerShell モジュール の作成の
PowerShell