トピック
    about_Modules

簡易説明
    Windows PowerShell モジュールをインストール、インポート、および使用する方法について説明します。

詳細説明
    モジュールとは、コマンドレット、プロバイダー、関数、変数、エイリアスなどの Windows PowerShell 
    コマンドをパッケージ化したものです。

    モジュールを使用することで、コマンドを作成する側のユーザーは、作成したコマンドを系統的にまとめ
    ることができ、他のユーザーと共有することができます。一方、モジュールを受け取る側も、モジュールの
    コマンドを自分の Windows PowerShell セッションに追加し、組み込みコマンドと同じ要領で使用する
    ことができます。

    このトピックでは、Windows PowerShell モジュールを使用する方法について説明します。
    Windows PowerShell モジュールの記述方法については、MSDN (Microsoft Developer Network) 
    ライブラリの「Windows PowerShell モジュールの記述 (英語ページの可能性があります)」
    (https://go.microsoft.com/fwlink/?LinkId=144916) を参照してください。
    

 モジュールを使用する方法
    モジュールを使用するには、次のタスクを実行します。

        1. モジュールをインストールする (ほとんどの場合は実行済みです)。
        2. Windows PowerShell セッションにモジュールをインポートする。
        3. モジュールにより追加されたコマンドを検索する。
        4. モジュールにより追加されたコマンドを使用する。
     
    このトピックでは、これらのタスクを実行する方法について説明します。その他、
    モジュール管理に関する有用な情報も含まれています。


 モジュールをインストールする方法
    ファイルが格納されたフォルダーとして受け取ったモジュールを Windows PowerShell 
    にインポートするには、まずモジュールをコンピューターにインストールする
    必要があります。

    ほとんどのモジュールは、既にインストールされています。Windows PowerShell には、
    プレインストール モジュールがいくつか用意されています。Windows Server 2008 R2 
    の場合、サーバー マネージャーの機能の追加ウィザードによって、選択した機能
    モジュールが自動的にインストールされます。モジュールをインストールする
    インストーラーまたはセットアップ プログラムには、他にも多くのモジュールが付属
    しています。

    モジュールをインストールするには

        1. 現在のユーザーに対して Modules ディレクトリが存在しない場合は、Modules 
           ディレクトリを作成します。

           Modules ディレクトリを作成するには、次のように入力します。

               new-item -type directory -path $home\Documents\WindowsPowerShell\Modules                             

        2. モジュール フォルダー全体を Modules ディレクトリにコピーします。

           Windows PowerShell 以外にも、Windows エクスプローラーおよび Cmd.exe 
           などのフォルダーを任意の方法でコピーできます。

           Windows PowerShell では、Copy-Item コマンドレットを使用します。たとえば、C:\ps-te
           st\MyModule にある MyModule フォルダーを Modules ディレクトリにコピーするには、次のよう
           に入力します。

               copy-item -path c:\ps-test\MyModule -dest $home\Documents\WindowsPowerShell\Modules

    モジュールは任意の場所にインストールできますが、既定のモジュールのインストール場
    所にインストールする方が管理は簡単です。既定のモジュールのインストール場所の詳細
    については、「モジュールのインストール場所と PSModulePath」を参照してください。



 インストールしたモジュールを検索する方法
     モジュールのインストールが完了したら、モジュールを Windows PowerShell 
     セッションにインポートできます。

     既定のモジュールのインストール場所にインストールされたモジュールを検索
     するには、Windows PowerShell プロンプトで次のように入力します。

         get-module -listAvailable


     セッションにインポート済みのモジュールを検索するには、Windows PowerShell 
     プロンプトで次のように入力します。

         get-module

     Get-Module コマンドレットの詳細については、「Get-Module」を参照してください。


 モジュールをインポートする方法
    モジュールのコマンドを使用するには、そのモジュールを Windows PowerShell 
    セッションにインポートします。

    既定のモジュールのインストール場所から現在のセッションにモジュールを
    インポートするには、次のコマンド形式を使用します。

        import-module <module-name>
    
    たとえば、BitsTransfer モジュールを現在のセッションにインポートするには、
    次のコマンドを入力します。

        import-module BitsTransfer

       
 
    既定のモジュールのインストール場所以外に存在するモジュールをインポートする
    には、モジュール フォルダーへの完全修飾パスをコマンドに使用します。

    たとえば、C:\ps-test ディレクトリ内の TestCmdlets モジュールをセッションに
    追加するには、次のように入力します。

        import-module c:\ps-test\TestCmdlets


    セッションにモジュールを追加する方法の詳細については、「Import-Module」を
    参照してください。


 すべてのモジュールを Windows PowerShell セッションにインポートする方法
    Windows 7 および Windows Server 2008 R2 では、"すべてのモジュールのインポート" 
    タスクを実行すると、使用可能な Windows PowerShell モジュールおよびスナップイン
    がすべてインポートされた Windows PowerShell セッションを起動できます。

    使用可能な Windows PowerShell モジュールおよびスナップインがすべてインポートされた 
    Windows PowerShell セッションを開始するには、次の手順を使用します。

    -- タスクバーの [Windows PowerShell] アイコンを右クリックし、[すべてのモジュールの
       インポート] をクリックします。

    注: Windows Server 2008 R2 では、[Windows PowerShell] アイコンが既定でタスクバーに固定
        されています。ただし、"すべてのモジュールのインポート" タスクが表示されるようにする
        には、Windows PowerShell を一度起動する必要があります。

    その他のバージョンの Windows の場合、使用可能なモジュールをすべてセッションにインポート
    するには、Windows PowerShell プロンプトで次のように入力します。

        get-module -listAvailable | import-module


 モジュール内のコマンドを検索する方法
    モジュールを Windows PowerShell セッションにインポートすると、
    モジュール内のコマンドを使用できるようになります。

    モジュールによって追加されたコマンドを検索するには、Windows PowerShell 
    プロンプトで次のように入力します。

        get-command -module <module-name>

    たとえば、BitsTransfer モジュールによって追加されたコマンドを検索するには、
    次のように入力します。

        get-command -module BitsTransfer

    Get-Command コマンドレットの詳細については、「Get-Command」を参照してください。



 モジュールのコマンドのヘルプを検索する方法
    エクスポートされるコマンドに関するヘルプ トピックがモジュールに含まれている場合は、
    Get-Help コマンドレットを使用してヘルプ トピックを表示できます。使用するコマンド
    形式は、Windows PowerShell で他のヘルプ トピックを表示する場合と同じです。

    モジュールのコマンドに関するヘルプ トピックを検索するには、Windows PowerShell 
    プロンプトで次のように入力します。

        get-help <command-name>

    詳細なヘルプを表示するには、次のように入力します。

        get-help <command-name> -detailed

    たとえば、Start-BitsTransfer コマンドレットの詳細なヘルプを検索するには、
    次のように入力します。
       
        get-help Start-BitsTransfer -detailed

    Get-Help モジュールの詳細については、「Get-Help」を参照してください。




 モジュールを削除する方法
    モジュールを削除すると、モジュールによって追加されたコマンドもセッションから
    削除されます。

    セッションからモジュールを削除するには、次のコマンド形式を使用します。

        remove-module <module-name>

    たとえば、現在のセッションから BitsTransfer モジュールを削除するには、
    次のコマンドを入力します。

        remove-module BitsTransfer

    モジュールの削除では、モジュールのインポートと逆の処理が行われます。
    モジュールの削除により、モジュールがアンインストールされることはありません。
    Remove-Module コマンドレットの詳細については、「Remove-Module」を参照してください。



 モジュールをすべてのセッションにインポートする方法
    現在の Windows PowerShell セッションにモジュールをインポートする場合は、
    Import-Module コマンドを使用します。このコマンドは、現在のセッションにのみ有効です。

    開始するすべての Windows PowerShell セッションにモジュールをインポートするには、
    Import-Module コマンドを Windows PowerShell プロファイルに追加します。

    プロファイルの詳細については、「about_Profiles」を参照してください。

  
 モジュールのインストール場所と PSModulePath
    Windows PowerShell モジュールの既定のインストール場所には、
    システム用と現在のユーザー用の 2 つがあります。

        システム用:        $pshome\Modules 
                               (%windir%\System32\WindowsPowerShell\v1.0\Modules)

        現在のユーザー用:  $home\Documents\WindowsPowerShell\Modules
                               (%UserProfile%\Documents\WindowsPowerShell\Modules)

                           - または -

                           $home\My Documents\WindowsPowerShell\Modules
                               (%UserProfile%\My Documents\WindowsPowerShell\Modules)



        注: Windows Vista、Windows Server 2008、およびそれ以降のバージョンの Windows 
            で、%Windir%\System32 ディレクトリのファイルを追加または変更するには、
            Windows PowerShell を起動する際に [管理者として実行] を指定する必要があります。


    システムの既定のモジュールのインストール場所を変更するには、PSModulePath 環境変数 
    ($env:psmodulepath) の値を変更します。PSModulePath 環境変数は、Path 環境変数をモデル
    としているため、Path 環境変数と同じ形式を使用できます。
 

    既定のモジュールのインストール場所を表示するには、次のように入力します。

        $env:psmodulepath


    既定のモジュールのインストール場所を追加するには、次のコマンド形式を使用します。

        $env:psmodulepath = $env:psmodulepath + ";<path>"


    コマンドのセミコロン (;) は、一覧の新しいパスとその直前のパスとを区切ります。


    たとえば、C:\ps-test\Modules ディレクトリを追加するには、次のように入力します。

        $env:psmodulepath + ";c:\ps-test\Modules"


    パスを PSModulePath に追加すると、そのパスに含まれるモジュールも Get-Module および 
    Import-Module コマンドの対象となります。
       
    設定する値は、現在のセッションにのみ有効です。変更を保持するには、Windows PowerShell 
    プロファイルにコマンドを追加するか、コントロール パネルの [システム] で、レジストリの 
    PSModulePath 環境変数の値を変更します。

    PSModulePath 変数の詳細については、「about_Environment_Variables」を参照してくだ
    さい。


 モジュールおよび名前の競合
    セッションに同じ名前のコマンドが複数存在すると、名前の競合が発生します。
    モジュールのコマンド名がセッション内のコマンド名または項目名と重複する場合は、
    モジュールのインポート時に名前の競合が発生します。

    名前の競合により、コマンドが隠れたり、置き換えられたりすることがあります。

        -- 隠れる: コマンド名を入力したときに別のコマンドが実行される場合、
           コマンドは隠れています。ただし、別の方法 (インポート元のモジュール名
           またはスナップイン名でコマンド名を修飾するなど) を使用することで、
           隠れているコマンドを実行できます。

        -- 置換される: 同じ名前のコマンドによって上書きされて実行することができない
           場合、コマンドは置換されています。競合の原因となっているモジュールを削除
           しても、セッションを再開しない限り、置換されたコマンドを実行することはできません。


    Import-Module により、現在のセッション内のコマンドを隠したり置換するようなコマンドが追加
    される場合があります。また、モジュールによって追加されたコマンドが、現在のセッション内の
    コマンドで隠れた状態になる場合もあります。

    名前の競合を回避するには、Import-Command の Prefix パラメーターを使用して、インポートする
    コマンドに一意の名前を作成します。

    また、Import-Module の Alias、Cmdlet、Function、および Variable パラメーターを使用して、
    インポートする必要のあるコマンドだけを選択し、セッション内で名前が競合するコマンドを除外
    することもできます。

    コマンドが隠れていても、インポート元のモジュール名またはスナップイン名でコマンド名を修飾
    することで、コマンドを実行できます。
           
    セッション内に同じ名前のコマンドが存在する場合は、Windows PowerShell のコマンド優先順位
    の規則に従って、実行するコマンドが決定されます。

    たとえば、セッション内に同じ名前の関数とコマンドレットが存在する場合、Windows 
    PowerShell は既定で関数を実行します。2 つのコマンドレットに同じ名前が付いている場合など、
    セッション内に同じ名前を持つ同じ種類のコマンドが存在する場合は、最後に追加されたコマンド
    が既定で実行されます。

    優先順位の規則や隠しコマンドの実行方法など、詳細については「about_Command_Precedence」
    を参照してください。
     
     
       
 モジュールおよびスナップイン
    モジュールおよびスナップインからセッションにコマンドを追加できます。モジュールでは、
    コマンドレット、プロバイダー、関数に加え、変数、エイリアス、および Windows PowerShell 
    ドライブなどの項目を含む、すべてのタイプのコマンドを追加できます。一方、スナップインでは、
    コマンドレットとプロバイダーのみを追加できます。

    実際、関数、エイリアス、変数、およびドライブの入力やスクリプトの実行によって、それらの項目
    をセッションに追加できますが、セッション内のすべてのコマンドレットおよびプロバイダーは、
    モジュールまたはスナップインにより提供されます。

    モジュールまたはスナップインをセッションから削除する前に、次のコマンドを入力して削除される
    コマンドを確認します。

    セッション内のコマンドレットのソースを検索するには、次のコマンド形式を使用します。

        get-command <cmdlet-name> | format-list -property verb, noun, pssnapin, module

    たとえば、Get-Date コマンドレットのソースを検索するには、次のように入力します。

        get-command get-date | format-list -property verb, noun, pssnapin, module
 
    Windows PowerShell スナップインの詳細については、「about_PSSnapins」を参照してください。


関連項目
    about_Command_Precedence
    about_PSSnapins
    Get-Command
    Get-Help
    Get-Module
    Import-Module
    Remove-Module




目次