メモリ内にのみ存在する新しい動的モジュールを作成します。

構文

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 関数を定義してから関数を呼び出します。






関連項目




目次