メモリ内にのみ存在する新しい動的モジュールを作成します。
構文
New-Module [-Name] <string> [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-関数 <string[]>] [-ReturnResult] [<CommonParameters>] New-Module [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-関数 <string[]>] [-ReturnResult] [<CommonParameters>]
説明
New-Module コマンドレットは、スクリプト ブロックから動的モジュールを作成します。関数や変数などの動的モジュールのメンバーは、セッションで直ちに使用可能で、セッションを終了するまで使用できます。
静的モジュールと同様に、既定では、動的モジュールのコマンドレットと関数はエクスポートされ、変数とエイリアスはエクスポートされません。ただし、Export-ModuleMember コマンドレットと New-Module のパラメーターを使用すると、既定値を上書きできます。
動的モジュールは、ディスク上ではなくメモリ内にのみ存在します。すべてのモジュールと同様に、動的モジュールのメンバーは、グローバル スコープの子であるプライベート モジュール スコープで実行されます。Get-Module は動的モジュールを取得できませんが、Get-Command はエクスポートされたメンバーを取得できます。
動的モジュールを Get-Module で利用可能にするには、New-Module コマンドを Import-Module にパイプするか、New-Module によって返されたモジュール オブジェクトを Import-Module にパイプします。この処理により、動的モジュールは Get-Module の一覧に追加されますが、ディスクにモジュールは保存されず、モジュールが存続することはありません。
パラメーター
-ArgumentList <Object[]>
スクリプト ブロックに渡される引数 (パラメーター値) を指定します。
必須 |
false |
位置 |
named |
既定値 |
なし |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-AsCustomObject
モジュール メンバーを表すメンバーを含むカスタム オブジェクトを返します。
AsCustomObject パラメーターを使用すると、New-Module は動的モジュールを作成してモジュール メンバーを現在のセッションにインポートし、PSModuleInfo オブジェクトではなく、PSCustomObject オブジェクトを返します。変数にカスタム オブジェクトを保存し、ドット表記を使用してメンバーを呼び出すことができます。
同じ名前の複数のメンバーがモジュールにあっても (たとえば "A" という関数と "A" という変数)、カスタム オブジェクトからアクセスできるのは、1 つの名前につき 1 つのメンバーのみです。
必須 |
false |
位置 |
named |
既定値 |
なし |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Cmdlet <string[]>
モジュールから、指定されたコマンドレットのみを現在のセッションにエクスポートします。コマンドレットのコンマ区切り一覧を入力します。ワイルドカード文字を使用できます。既定では、モジュールのすべてのコマンドレットがエクスポートされます。
スクリプト ブロックではコマンドレットを定義できません。ただし、動的モジュールがバイナリ モジュールからコマンドレットをインポートする場合は、動的モジュールにコマンドレットを含めることができます。
必須 |
false |
位置 |
named |
既定値 |
なし |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
true |
-関数 <string[]>
モジュールから、指定された関数のみを現在のセッションにエクスポートします。関数のコンマ区切り一覧を入力します。ワイルドカード文字を使用できます。既定では、モジュールで定義されるすべての関数はエクスポートされます。
必須 |
false |
位置 |
named |
既定値 |
なし |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
true |
-Name <string>
新しいモジュールの名前を指定します。パイプを使用してモジュール名を New-Module に渡すこともできます。
既定値は、"__DynamicModule_" で始まり、その後に動的モジュールへのパスを指定する GUID が続く自動生成名です。
必須 |
true |
位置 |
1 |
既定値 |
"__DynamicModule_" + GUID |
パイプライン入力を許可する |
true (ByValue) |
ワイルドカード文字を許可する |
false |
-ReturnResult
スクリプト ブロックを実行し、モジュール オブジェクトを返す代わりにスクリプト ブロックの結果を返します。
必須 |
false |
位置 |
named |
既定値 |
False |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-ScriptBlock <scriptblock>
動的モジュールの内容を指定します。内容を中かっこ ({ }) で囲み、スクリプト ブロックを作成します。このパラメーターは必須です。
必須 |
true |
位置 |
1 |
既定値 |
なし |
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。Ô”¼š¤Ë¤Ä¤¤¤Æ¤Ï¡¢次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.String パイプを使用してモジュール名文字列を New-Module に渡すことができます。 |
出力 |
System.Management.Automation.PSModuleInfo、System.Management.Automation.PSCustomObject、または None 既定では、New-Module は PSModuleInfo オブジェクトを生成します。AsCustomObject パラメーターを使用すると、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 GreetingModule | 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 関数を定義してから関数を呼び出します。
関連項目