次の方法で共有


Windows PowerShell モジュールについて

モジュール は、関連する Windows PowerShell 機能のセットであり、便利な単位としてグループ化されます (通常は 1 つのディレクトリに保存されます)。 関連するスクリプト ファイル、アセンブリ、および関連リソースのセットをモジュールとして定義することで、コードの参照、読み込み、永続化、共有を他の方法よりもはるかに簡単に行うことができます。

モジュールの主な目的は、Windows PowerShell コードのモジュール化 (再利用と抽象化) を許可することです。 たとえば、モジュールを作成する最も基本的な方法は、単に Windows PowerShell スクリプトを .psm1 ファイルとして保存することです。 これにより、スクリプトに含まれる関数と変数を制御 (つまり、パブリックまたはプライベートにする) ことができます。 スクリプトを .psm1 ファイルとして保存すると、特定の変数のスコープを制御することもできます。 最後に、Install-Module などのコマンドレットを使用して、大規模なソリューションの構成要素としてスクリプトを整理、インストール、および使用することもできます。

モジュールのコンポーネントと型

モジュールは、次の 4 つの基本的なコンポーネントで構成されます。

  1. 何らかの種類のコード ファイル (通常は PowerShell スクリプトまたはマネージド コマンドレット アセンブリ)。

  2. 上記のコード ファイルに必要なもの (追加のアセンブリ、ヘルプ ファイル、スクリプトなど)。

  3. 上記のファイルを記述するマニフェスト ファイルと、作成者やバージョン管理情報などのメタデータを格納します。

  4. 上記のすべてのコンテンツを含み、PowerShell が適切に検索できる場所にあるディレクトリ。

    これらのコンポーネント自体は、実際には必要ありません。 たとえば、モジュールは技術的には、.psm1 ファイルに格納されているスクリプトに限られます。 また、マニフェスト ファイルに過ぎないモジュールを作成することもできます。これは主に組織の目的で使用されます。 モジュールを動的に作成するスクリプトを記述することもできます。そのため、実際には何も格納するディレクトリは必要ありません。 次のセクションでは、モジュールのさまざまな可能な部分を一緒に混合して照合することで取得できるモジュールの種類について説明します。

スクリプト モジュール

名前が示すように、スクリプト モジュール は、有効な Windows PowerShell コードを含むファイル (.psm1) です。 スクリプト開発者と管理者は、この種類のモジュールを使用して、関数、変数などのメンバーを含むモジュールを作成できます。 スクリプト モジュールは、別の拡張機能を持つ単なる Windows PowerShell スクリプトであり、管理者はインポート、エクスポート、管理機能を使用できます。

さらに、マニフェスト ファイルを使用して、データ ファイル、他の依存モジュール、ランタイム スクリプトなどの他のリソースをモジュールに含めることができます。 マニフェスト ファイルは、オーサリング情報やバージョン管理情報などのメタデータを追跡する場合にも役立ちます。

最後に、スクリプト モジュールは、動的に作成されていない他のモジュールと同様に、PowerShell が合理的に検出できるフォルダーに保存する必要があります。 通常、これは PowerShell モジュール パスにあります。ただし、必要に応じて、モジュールがインストールされている場所を明示的に記述できます。 詳細については、「PowerShell スクリプト モジュールを記述する方法」を参照してください。

バイナリ モジュール

バイナリ モジュール は、C# などのコンパイル済みコードを含む .NET Framework アセンブリ (.dll) です。 コマンドレット開発者は、この種類のモジュールを使用して、コマンドレット、プロバイダーなどを共有できます。 (既存のスナップインはバイナリ モジュールとしても使用できます)。スクリプト モジュールと比較して、バイナリ モジュールを使用すると、Windows PowerShell スクリプトで簡単にコーディングできない、より高速なコマンドレットを作成したり、機能 (マルチスレッドなど) を使用したりできます。

スクリプト モジュールと同様に、マニフェスト ファイルを含め、モジュールが使用するその他のリソースを記述したり、モジュールに関するメタデータを追跡したりできます。 同様に、バイナリ モジュールは、PowerShell モジュール パスのどこかのフォルダーにインストールする必要があります。 詳細については、「PowerShell バイナリ モジュール を記述する方法をする方法」を参照してください。

マニフェスト モジュール

マニフェスト モジュール は、マニフェスト ファイルを使用してそのすべてのコンポーネントを記述するモジュールですが、コア アセンブリやスクリプトの種類はありません。 (正式には、マニフェスト モジュールはマニフェストの ModuleToProcess または RootModule 要素を空のままにします)。ただし、依存アセンブリを読み込んだり、特定の前処理スクリプトを自動的に実行したりする機能など、モジュールの他の機能を引き続き使用できます。 また、入れ子になったモジュール、アセンブリ、型、形式など、他のモジュールが使用するリソースをパッケージ化する便利な方法としてマニフェスト モジュールを使用することもできます。 詳細については、「PowerShell モジュール マニフェストを記述する方法」を参照してください。

動的モジュール

動的モジュール は、ファイルから読み込まれたり、ファイルに保存されたりしないモジュールです。 代わりに、New-Module コマンドレットを使用して、スクリプトによって動的に作成されます。 この種類のモジュールを使用すると、スクリプトは、永続ストレージに読み込んだり保存したりする必要のないモジュールをオンデマンドで作成できます。 その性質上、動的モジュールは有効期間が短いため、Get-Module コマンドレットからアクセスすることはできません。 同様に、通常、モジュール マニフェストは必要ありません。また、関連するアセンブリを格納するために永続的なフォルダーが必要な場合もありません。

モジュール マニフェスト

モジュール マニフェスト は、ハッシュ テーブルを含む .psd1 ファイルです。 ハッシュ テーブルのキーと値は、次のことを行います。

  • モジュールの内容と属性について説明します。

  • 前提条件を定義します。

  • コンポーネントの処理方法を決定します。

    モジュールにはマニフェストは必要ありません。 モジュールは、スクリプト ファイル (.ps1)、スクリプト モジュール ファイル (.psm1)、マニフェスト ファイル (.psd1)、書式設定と種類ファイル (.ps1xml)、コマンドレットおよびプロバイダー アセンブリ (.dll)、リソース ファイル、ヘルプ ファイル、ローカライズ ファイル、またはモジュールの一部としてバンドルされているその他の種類のファイルまたはリソースを参照できます。 国際化されたスクリプトの場合、モジュール フォルダーにはメッセージ カタログ ファイルのセットも含まれます。 マニフェスト ファイルをモジュール フォルダーに追加する場合は、マニフェストを参照することで、複数のファイルを 1 つの単位として参照できます。

    マニフェスト自体には、次のカテゴリの情報が記述されています。

  • モジュールのバージョン番号、作成者、説明など、モジュールに関するメタデータ。

  • Windows PowerShell バージョン、共通言語ランタイム (CLR) バージョン、必要なモジュールなど、モジュールをインポートするために必要な前提条件。

  • 処理するスクリプト、形式、型などの処理ディレクティブ。

  • エクスポートするモジュールのメンバーに対する制限 (エクスポートするエイリアス、関数、変数、コマンドレットなど)。

    詳細については、「PowerShell モジュール マニフェストを記述する方法」を参照してください。

モジュールの格納とインストール

スクリプト、バイナリ、またはマニフェスト モジュールを作成したら、他のユーザーがアクセスできる場所に作業内容を保存できます。 たとえば、モジュールは、Windows PowerShell がインストールされているシステム フォルダーに格納することも、ユーザー フォルダーに格納することもできます。

一般に、$Env:PSModulePath 変数に格納されているパスのいずれかを使用して、モジュールをインストールする場所を決定できます。 これらのパスのいずれかを使用すると、ユーザーがコードでモジュールを呼び出すときに、PowerShell でモジュールを自動的に検索して読み込むことができます。 モジュールを別の場所に格納する場合は、Install-Moduleを呼び出すときにモジュールの場所をパラメーターとして渡すことで、PowerShell に明示的に通知できます。

いずれの場合も、フォルダーのパスはモジュールの ベース (ModuleBase) と呼ばれ、スクリプト、バイナリ、またはマニフェスト モジュール ファイルの名前はモジュール フォルダー名と同じである必要があります。ただし、次の例外があります。

  • New-Module コマンドレットによって作成された動的モジュールには、コマンドレットの Name パラメーターを使用して名前を付けることができます。

  • Import-Module -Assembly コマンドによってアセンブリ オブジェクトからインポートされたモジュールには、次の構文に従って名前が付けられます:"dynamic_code_module_" + assembly.GetName()

    詳細については、「PowerShell モジュールのabout_PSModulePathのインストール」を参照してください。

モジュールコマンドレットと変数

次のコマンドレットと変数は、モジュールの作成と管理のために Windows PowerShell によって提供されます。

New-Module コマンドレットこのコマンドレットは、メモリ内にのみ存在する新しい動的モジュールを作成します。 モジュールはスクリプト ブロックから作成され、エクスポートされたメンバー (関数や変数など) はセッションですぐに使用でき、セッションが閉じられるまで使用できます。

New-ModuleManifest コマンドレットこのコマンドレットは、新しいモジュール マニフェスト (.psd1) ファイルを作成し、その値を設定し、マニフェスト ファイルを指定したパスに保存します。 このコマンドレットを使用して、手動で入力できるモジュール マニフェスト テンプレートを作成することもできます。

Import-Module コマンドレットこのコマンドレットは、現在のセッションに 1 つ以上のモジュールを追加します。

Get-Module コマンドレットこのコマンドレットは、現在のセッションにインポートされた、またはインポートできるモジュールに関する情報を取得します。

Export-ModuleMember コマンドレットこのコマンドレットは、スクリプト モジュール (.psm1) ファイルまたは New-Module コマンドレットを使用して作成された動的モジュールからエクスポートされるモジュール メンバー (コマンドレット、関数、変数、エイリアスなど) を指定します。

Remove-Module コマンドレットこのコマンドレットは、現在のセッションからモジュールを削除します。

Test-ModuleManifest コマンドレットこのコマンドレットは、モジュール マニフェスト ファイル (.psd1) に一覧表示されているファイルが、指定したパスに実際に存在することを確認することで、モジュール マニフェストがモジュールのコンポーネントを正確に記述していることを確認します。

$PSScriptRoot この変数には、スクリプト モジュールの実行元のディレクトリが含まれています。 これにより、スクリプトはモジュール パスを使用して他のリソースにアクセスできます。

$Env:PSModulePath この環境変数には、Windows PowerShell モジュールが格納されているディレクトリの一覧が含まれています。 Windows PowerShell では、モジュールを自動的にインポートし、モジュールのヘルプ トピックを更新するときに、この変数の値が使用されます。

こちらもご覧ください

Windows PowerShell モジュール の作成の