Erstellt ein neues dynamisches Modul, das nur im Arbeitsspeicher vorhanden ist.

Syntax

New-Module [-Name] <string> [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]

New-Module [-ScriptBlock] <scriptblock> [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Function <string[]>] [-ReturnResult] [<CommonParameters>]

Beschreibung

Mit dem Cmdlet "New-Module" wird ein dynamisches Modul aus einem Skriptblock erstellt. Die Elemente des dynamischen Moduls, z. B. Funktionen und Variablen, sind in der Sitzung sofort verfügbar und bleiben verfügbar, bis Sie die Sitzung schließen.

Genauso wie statische Module werden die Cmdlets und Funktionen in einem dynamischen Modul standardmäßig exportiert, die Variablen und Aliase jedoch nicht. Sie können jedoch das Cmdlet "Export-ModuleMember" und die Parameter von New-Module verwenden, um die Standardeinstellungen zu überschreiben.

Dynamische Module sind nur im Arbeitsspeicher, nicht jedoch auf dem Datenträger vorhanden. Genauso wie alle Module werden die Elemente dynamischer Module in einem privaten Modulbereich ausgeführt, der ein untergeordnetes Element des globalen Bereichs ist. Get-Module kann kein dynamisches Modul abrufen, Get-Command ist jedoch in der Lage, die exportierten Elemente abzurufen.

Übergeben Sie den Befehl "New-Module" über die Pipeline an Import-Module, oder übergeben Sie das Modulobjekt, das von New-Module zurückgegeben wird, über die Pipeline an Import-Module, um ein dynamisches Modul für Get-Module verfügbar zu machen. Dadurch wird das dynamische Modul der Liste "Get-Module" hinzugefügt, ohne jedoch auf dem Datenträger gespeichert oder dauerhaft verfügbar gemacht zu werden.

Parameter

-ArgumentList <Object[]>

Gibt Argumente (Parameterwerte) an, die an den Skriptblock übergeben werden.

Erforderlich?

false

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-AsCustomObject

Gibt ein benutzerdefiniertes Objekt mit Elementen zurück, die die Modulelemente darstellen.

Wenn Sie den AsCustomObject-Parameter verwenden, wird das dynamische Modul von New-Module erstellt, die Modulelemente werden in die aktuelle Sitzung importiert, und ein PSCustomObject-Objekt wird anstelle eines PSModuleInfo-Objekts zurückgegeben. Sie können das benutzerdefinierte Objekt in einer Variablen speichern und die punktierte Notation verwenden, um die Elemente aufzurufen.

Wenn das Modul über mehrere Elemente mit dem gleichen Namen verfügt, z. B. eine Funktion und eine Variable mit dem Namen "A", kann vom benutzerdefinierten Objekt jeweils nur auf ein Element dieses Namens zugegriffen werden.

Erforderlich?

false

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Cmdlet <string[]>

Exportiert nur die angegebenen Cmdlets aus dem Modul in die aktuelle Sitzung. Geben Sie eine durch Trennzeichen getrennte Liste von Cmdlets ein. Platzhalterzeichen sind zulässig. Standardmäßig werden alle Cmdlets im Modul exportiert.

Sie können in einem Skriptblock keine Cmdlets definieren, ein dynamisches Modul kann jedoch Cmdlets einschließen, wenn es die Cmdlets aus einem binären Modul importiert.

Erforderlich?

false

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

true

-Function <string[]>

Exportiert nur die angegebenen Funktionen aus dem Modul in die aktuelle Sitzung. Geben Sie eine durch Trennzeichen getrennte Liste von Funktionen ein. Platzhalterzeichen sind zulässig. Standardmäßig werden alle in einem Modul definierten Funktionen exportiert.

Erforderlich?

false

Position?

named

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

true

-Name <string>

Gibt einen Namen für das neue Modul an. Sie können Modulnamen auch über die Pipeline an New-Module übergeben.

Der Standardwert ist ein automatisch generierter Name, der mit "__DynamicModule_" beginnt. Darauf folgt ein GUID, die den Pfad zum dynamischen Modul angibt.

Erforderlich?

true

Position?

1

Standardwert

"__DynamicModule_" + GUID

Pipelineeingaben akzeptieren?

true (ByValue)

Platzhalterzeichen akzeptieren?

false

-ReturnResult

Führt den Skriptblock aus und gibt die Skriptblockergebnisse anstelle eines Modulobjekts zurück.

Erforderlich?

false

Position?

named

Standardwert

False

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-ScriptBlock <scriptblock>

Gibt den Inhalt des dynamischen Moduls an. Schließen Sie den Inhalt in geschweifte Klammern ({}) ein, um einen Skriptblock zu erstellen. Dieser Parameter ist erforderlich.

Erforderlich?

true

Position?

1

Standardwert

keine

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

Eingaben

System.String

Sie können eine Modulnamenszeichenfolge über die Pipeline an New-Module übergeben.

Ausgaben

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject oder Keiner

New-Module generiert standardmäßig ein PSModuleInfo-Objekt. Wenn Sie den AsCustomObject-Parameter verwenden, wird ein PSCustomObject-Objekt generiert. Wenn Sie den ReturnResult-Parameter verwenden, gibt er das Ergebnis der Auswertung des Skriptblocks im dynamischen Modul zurück.

Hinweise

Sie können auch über den Alias "nmo" auf New-Module verweisen. Weitere Informationen finden Sie unter "about_Aliases".

Beispiel 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     : {}

Beschreibung
-----------
Dieser Befehl erstellt ein neues dynamisches Modul mit der Funktion "Hallo". Der Befehl gibt ein Modulobjekt zurück, das das neue dynamische Modul darstellt.






Beispiel 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!"

Beschreibung
-----------
In diesem Beispiel wird gezeigt, dass dynamische Module nicht vom Cmdlet "Get-Module" zurückgegeben werden. Stattdessen werden die von ihnen exportierten Elemente vom Cmdlet "Get-Command" zurückgegeben.






Beispiel 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

Beschreibung
-----------
In diesem Befehl wird eine Variable mit dem Cmdlet "Export-ModuleMember" in die aktuelle Sitzung exportiert. Ohne den Befehl "Export-ModuleMember" wird nur die Funktion exportiert.

Die Ausgabe zeigt an, dass sowohl die Variable als auch die Funktion in die Sitzung exportiert wurden.






Beispiel 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!"

Beschreibung
-----------
Dieser Befehl zeigt, dass ein dynamisches Modul durch Übergeben des Moduls über die Pipeline an das Cmdlet "Import-Module" für das Cmdlet "Get-Module" verfügbar gemacht werden kann.

Mit dem ersten Befehl wird das Modulobjekt, das von "New-Module" generiert wird, mit einem Pipelineoperator (|) an das Cmdlet "Import-Module" übergeben. Mit dem Name-Parameter von New-Module wird dem Modul im Befehl ein Anzeigename zugewiesen. Da von Import-Module standardmäßig keine Objekte zurückgegeben werden, wird von diesem Befehl keine Ausgabe generiert.

Im zweiten Befehl werden die Module in der Sitzung mit dem Cmdlet "Get-Module" abgerufen. Das Ergebnis zeigt an, dass die neuen dynamischen Module mit Get-Module abgerufen werden können.

Im dritten Befehl wird die Funktion "Hello", die vom dynamischen Modul exportiert wird, mit dem Cmdlet "Get-Command" abgerufen.






Beispiel 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

Beschreibung
-----------
In diesem Beispiel wird gezeigt, wie mit dem AsCustomObject-Parameter von New-Module ein benutzerdefiniertes Objekt mit Skriptmethoden generiert wird, die die exportierten Funktionen darstellen.

Im ersten Befehl wird mit dem Cmdlet "New-Module" ein dynamisches Modul mit den Funktionen "Hello" und "Goodbye" generiert. Mit dem AsCustomObject-Parameter wird von dem Befehl ein benutzerdefiniertes Objekt anstelle des PSModuleInfo-Objekts generiert, das standardmäßig von New-Module generiert wird. Das benutzerdefinierte Objekt wird vom Befehl in der Variablen "$m" gespeichert.

Im zweiten Befehl wird versucht, den Wert der Variablen "$m" anzuzeigen. Es wird kein Inhalt angezeigt.

Im dritten Befehl wird das benutzerdefinierte Objekt mit einem Pipelineoperator (|) an das Cmdlet "Get-Member" gesendet, das die Eigenschaften und Methoden des benutzerdefinierten Objekts anzeigt. Die Ausgabe zeigt, dass das Objekt über zwei Skriptmethoden verfügt, die die Funktionen "Hello" und "Goodbye" darstellen.

Im vierten und fünften Befehl werden mit dem Skriptmethodenformat die Funktionen "Hello" und "Goodbye" aufgerufen. 
 
Mit dem sechsten und siebten Befehl werden die Funktionen anhand des Funktionsnamens und des Parameterwerts aufgerufen.






Beispiel 6

C:\PS>new-module -scriptblock {function SayHello {"Hello, World!"}; SayHello} -returnResult

Hello, World!

Beschreibung
-----------
Dieser Befehl verwendet den ReturnResult-Parameter, um die Ergebnisse der Skriptblockausführung anstelle eines Modulobjekts anzufordern. 

Durch den Skriptblock im neuen Modul wird die SayHello-Funktion definiert und dann die Funktion aufgerufen.






Siehe auch




Inhaltsverzeichnis