PowerShell Cmdlet - New-Module
 記事記号:[mg1927] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    New-Module
    
概要
    メモリ内にのみ存在する新しい動的モジュールを作成します。
    
構文
    New-Module [-Name] <string> [-ScriptBlock] <scriptblock> [-ArgumentList <Obj
    ect[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-Retu
    rnResult] [<CommonParameters>]
    
    New-Module [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCusto
    mObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<Commo
    nParameters>]
    
説明
    New-Module コマンドレットは、スクリプト ブロックから動的モジュールを作成しま
    す。関数や変数などの動的モジュールのメンバーは、セッションで直ちに使用可能で、
    セッションを終了するまで使用できます。
    
    静的モジュールと同様に、既定では、動的モジュールのコマンドレットと関数はエク
    スポートされ、変数とエイリアスはエクスポートされません。ただし、Export-Modul
    eMember コマンドレットと New-Module のパラメーターを使用すると、既定値を上書
    きできます。
    
    動的モジュールは、ディスク上ではなくメモリ内にのみ存在します。すべてのモジュ
    ールと同様に、動的モジュールのメンバーは、グローバル スコープの子であるプラ
    イベート モジュール スコープで実行されます。Get-Module は動的モジュールを取
    得できませんが、Get-Command はエクスポートされたメンバーを取得できます。
    
    動的モジュールを Get-Module で利用可能にするには、New-Module コマンドを Impo
    rt-Module にパイプするか、New-Module によって返されたモジュール オブジェクト
    を Import-Module にパイプします。この処理により、動的モジュールは Get-Module 
    の一覧に追加されますが、ディスクにモジュールは保存されず、モジュールが存続す
    ることはありません。
    
パラメーター
    -ArgumentList <Object[]>
        スクリプト ブロックに渡される引数 (パラメーター値) を指定します。
        
        必須                         false
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -AsCustomObject [<SwitchParameter>]
        モジュール メンバーを表すメンバーを含むカスタム オブジェクトを返します。
        
        AsCustomObject パラメーターを使用すると、New-Module は動的モジュールを作
        成してモジュール メンバーを現在のセッションにインポートし、PSModuleInfo 
        オブジェクトではなく、PSCustomObject オブジェクトを返します。変数にカス
        タム オブジェクトを保存し、ドット表記を使用してメンバーを呼び出すことが
        できます。
        
        同じ名前の複数のメンバーがモジュールにあっても (たとえば "A" という関数
        と "A" という変数)、カスタム オブジェクトからアクセスできるのは、1 つの
        名前につき 1 つのメンバーのみです。
        
        必須                         false
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Cmdlet <string[]>
        モジュールから、指定されたコマンドレットのみを現在のセッションにエクスポ
        ートします。コマンドレットのコンマ区切り一覧を入力します。ワイルドカード
        文字を使用できます。既定では、モジュールのすべてのコマンドレットがエクス
        ポートされます。
        
        スクリプト ブロックではコマンドレットを定義できません。ただし、動的モジ
        ュールがバイナリ モジュールからコマンドレットをインポートする場合は、動
        的モジュールにコマンドレットを含めることができます。
        
        必須                         false
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    -Function <string[]>
        モジュールから、指定された関数のみを現在のセッションにエクスポートします。
        関数のコンマ区切り一覧を入力します。ワイルドカード文字を使用できます。既
        定では、モジュールで定義されるすべての関数はエクスポートされます。
        
        必須                         false
        位置                         named
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する true
        
    -Name <string>
        新しいモジュールの名前を指定します。パイプを使用してモジュール名を New-M
        odule に渡すこともできます。
        
        既定値は、"__DynamicModule_" で始まり、その後に動的モジュールへのパスを
        指定する GUID が続く自動生成名です。
        
        必須                         true
        位置                         1
        既定値                       "__DynamicModule_" + GUID
        パイプライン入力を許可する   true (ByValue)
        ワイルドカード文字を許可する false
        
    -ReturnResult [<SwitchParameter>]
        スクリプト ブロックを実行し、モジュール オブジェクトを返す代わりにスクリ
        プト ブロックの結果を返します。
        
        必須                         false
        位置                         named
        既定値                       False
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -ScriptBlock <scriptblock>
        動的モジュールの内容を指定します。内容を中かっこ ({ }) で囲み、スクリプト 
        ブロックを作成します。このパラメーターは必須です。
        
        必須                         true
        位置                         1
        既定値                       なし
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    System.String
        パイプを使用してモジュール名文字列を New-Module に渡すことができます。
    
出力
    System.Management.Automation.PSModuleInfo、System.Management.Automation.PSCu
    stomObject、または None
        既定では、New-Module は PSModuleInfo オブジェクトを生成します。AsCustomO
        bject パラメーターを使用すると、PSCustomObject オブジェクトが生成されま
        す。ReturnResult パラメーターが使用された場合は、動的モジュールのスクリ
        プト ブロックの評価結果を返します。
    
メモ
        New-Module をエイリアス "nmo" で参照することもできます。詳細については、
        「about_Aliases」を参照してください。
    
    -------------------------- 例 1 --------------------------
    
    C:\PS>new-module -scriptblock {function Hello {"Hello!"}}
    
    Name              : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
    Path              : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
    Description       :
    Guid              : 00000000-0000-0000-0000-000000000000
    Version           : 0.0
    ModuleBase        :
    ModuleType        : Script
    PrivateData       :
    AccessMode        : ReadWrite
    ExportedAliases   : {}
    ExportedCmdlets   : {}
    ExportedFunctions : {[Hello, Hello]}
    ExportedVariables : {}
    NestedModules     : {}
    
    説明
    -----------
    このコマンドは、"Hello" という関数を含む新しい動的モジュールを作成します。ま
    た、新しい動的モジュールを表すモジュール オブジェクトを返します。
    
    -------------------------- 例 2 --------------------------
    
    C:\PS>new-module -scriptblock {function Hello {"Hello!"}}
    
    Name              : __DynamicModule_2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
    Path              : 2ceb1d0a-990f-45e4-9fe4-89f0f6ead0e5
    Description       :
    Guid              : 00000000-0000-0000-0000-000000000000
    Version           : 0.0
    ModuleBase        :
    ModuleType        : Script
    PrivateData       :
    AccessMode        : ReadWrite
    ExportedAliases   : {}
    ExportedCmdlets   : {}
    ExportedFunctions : {[Hello, Hello]}
    ExportedVariables : {}
    NestedModules     : {}
    
    C:\PS> get-module
    C:\PS>
    
    C:\PS> get-command Hello
    
    CommandType     Name   Definition
    -----------     ----   ----------
    Function        Hello  "Hello!"
    
    説明
    -----------
    この例では、動的モジュールは Get-Module コマンドレットによって返されず、モジ
    ュールからエクスポートされたメンバーが Get-Command コマンドレットによって返
    されることを示しています。
    
    -------------------------- 例 3 --------------------------
    
    C:\PS>New-Module -scriptblock {$SayHelloHelp="Type 'SayHello', a space, and 
    a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember 
    -function SayHello -Variable SayHelloHelp}
    
    C:\PS> $SayHelloHelp
    Type 'SayHello', a space, and a name.
    
    C:\PS> SayHello Jeffrey
    Hello, Jeffrey
    
    説明
    -----------
    このコマンドは、Export-ModuleMember コマンドレットを使用して、変数を現在のセ
    ッションにエクスポートします。Export-ModuleMember コマンドを指定しない場合、
    関数のみがエクスポートされます。
    
    出力には、変数と関数の両方がセッションにエクスポートされたことが示されます。
    
    -------------------------- 例 4 --------------------------
    
    C:\PS>new-module -scriptblock {function Hello {"Hello!"}} -name GreetingModu
    le | import-module
    
    C:\PS> get-module
    
    Name              : GreetingModule
    Path              : d54dfdac-4531-4db2-9dec-0b4b9c57a1e5
    Description       :
    Guid              : 00000000-0000-0000-0000-000000000000
    Version           : 0.0
    ModuleBase        :
    ModuleType        : Script
    PrivateData       :
    AccessMode        : ReadWrite
    ExportedAliases   : {}
    ExportedCmdlets   : {}
    ExportedFunctions : {[Hello, Hello]}
    ExportedVariables : {}
    NestedModules     : {}
    
    C:\PS> get-command hello
    
    CommandType     Name   Definition
    -----------     ----   ----------
    Function        Hello  "Hello!"
    
    説明
    -----------
    このコマンドは、動的モジュールを Get-Module コマンドレットで利用可能にできる
    ことを示しており、これを行うために、パイプを使用して動的モジュールを Import-
    Module コマンドレットに渡しています。
    
    最初のコマンドは、パイプライン演算子 (|) を使用して、New-Module で生成された
    モジュール オブジェクトを Import-Module コマンドレットに送ります。このコマン
    ドは、New-Module の Name パラメーターを使用して、モジュールにフレンドリ名を
    割り当てます。既定では、Import-Module はオブジェクトを返さないため、このコマ
    ンドからの出力はありません。
    
    2 番目のコマンドは、Get-Module コマンドレットを使用して、セッションのモジュ
    ールを取得します。結果には、Get-Module で新しい動的モジュールを取得できるこ
    とが示されています。
    
    3 番目のコマンドは、Get-Command コマンドレットを使用して、動的モジュールか
    らエクスポートされた Hello 関数を取得します。
    
    -------------------------- 例 5 --------------------------
    
    C:\PS>$m = new-module -scriptblock {function Hello ($name) {"Hello, $name"}; 
    function Goodbye ($name) {"Goodbye, $name"}} -AsCustomObject
    
    C:\PS> $m
    
    C:\PS> $m | get-member
    
       TypeName: System.Management.Automation.PSCustomObject
    
    Name        MemberType   Definition
    ----        ----------   ----------
    Equals      Method       bool Equals(System.Object obj)
    GetHashCode Method       int GetHashCode()
    GetType     Method       type GetType()
    ToString    Method       string ToString()
    Goodbye     ScriptMethod System.Object Goodbye();
    Hello       ScriptMethod System.Object Hello();
    
    PS C:\ps-test> $m.goodbye("Jane")
    Goodbye, Jane
    
    PS C:\ps-test> $m.hello("Manoj")
    Hello, Manoj
    
    PS C:\ps-test> goodbye Jane
    Goodbye, Jane
    
    PS C:\ps-test> hello Manoj
    Hello, Manoj
    
    説明
    -----------
    この例は、New-Module の AsCustomObject パラメーターを使用して、エクスポート
    された関数を表すスクリプト メソッドを含むカスタム オブジェクトを生成する方法
    を示しています。
    
    最初のコマンドは、New-Module コマンドレットを使用して、2 つの関数 Hello およ
    び Goodbye を含む動的モジュールを生成します。このコマンドは AsCustomObject 
    パラメーターを使用して、既定で New-Module が生成する PSModuleInfo オブジェク
    トではなく、カスタム オブジェクトを生成します。また、カスタム オブジェクトを 
    $m 変数に保存します。
    
    2 番目のコマンドは、$m 変数の値を表示しようとします。内容は表示されません。
    
    3 番目のコマンドは、パイプライン演算子 (|) を使用して、カスタム オブジェクト
    を Get-Member コマンドレットに送信します。このコマンドレットは、カスタム オ
    ブジェクトのプロパティとメソッドを表示します。出力には、Hello 関数と Goodbye 
    関数を表すスクリプト メソッドがオブジェクトに含まれることが示されます。
    
    4 番目と 5 番目のコマンドは、スクリプト メソッドの形式を使用して、Hello 関数
    と Goodbye 関数を呼び出します。
     
    6 番目と 7 番目のコマンドは、関数名とパラメーター値を指定すると、関数を呼び
    出します。
    
    -------------------------- 例 6 --------------------------
    
    C:\PS>new-module -scriptblock {function SayHello {"Hello, World!"}; SayHello
    } -returnResult
    
    Hello, World!
    
    説明
    -----------
    このコマンドは、ReturnResult パラメーターを使用し、モジュール オブジェクトを
    要求するのではなく、スクリプト ブロックの実行結果を要求します。
    
    新しいモジュールのスクリプト ブロックは、SayHello 関数を定義してから関数を呼
    び出します。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=141554
    Get-Module 
    Import-Module 
    Remove-Module 
    Export-ModuleMember 
    about_Modules 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、New-ItemProperty
ご利用数: 1860128
感想・要望・問い合わせは こちら