次の方法で共有


PowerShell モジュールをインポートする

システムにモジュールをインストールしたら、モジュールをインポートする必要があります。 インポートは、ユーザーが 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 モジュール の作成の