New-Module
Erstellt ein neues dynamisches Modul, das nur im Arbeitsspeicher vorhanden ist.
Syntax
ScriptBlock (Standard)
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Name
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<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 sofort in der Sitzung verfügbar und bleiben verfügbar, bis Sie die Sitzung schließen.
Wie bei statischen Modulen werden standardmäßig die Cmdlets und Funktionen in einem dynamischen Modul exportiert, während Variablen und Aliase nicht exportiert werden. Sie können jedoch das Cmdlet Export-ModuleMember und die Parameter von New-Module verwenden, um die Standardwerte zu überschreiben.
Sie können auch den AsCustomObject-Parameter von New-Module verwenden, um das dynamische Modul als benutzerdefiniertes Objekt zurückzugeben. Die Member der Module, z. B. Funktionen, werden als Skriptmethoden des benutzerdefinierten Objekts implementiert, anstatt in die Sitzung importiert zu werden.
Dynamische Module sind nur im Arbeitsspeicher vorhanden, nicht auf dem Datenträger. Wie bei allen Modulen werden die Elemente von dynamischen Modulen in einem privaten Modulbereich ausgeführt, der ein untergeordnetes Element des globalen Bereichs ist. Get-Module kann kein dynamisches Modul abrufen, aber Get-Command können die exportierten Member abrufen.
Um ein dynamisches Modul für Get-Module verfügbar zu machen, übergeben Sie einen New-Module-Befehl an Import-Module, oder übergeben Sie das Modulobjekt, das New-Module an Import-Module zurückgibt. Diese Aktion fügt das dynamische Modul der Get-Module-Liste hinzu, speichert das Modul jedoch nicht auf dem Datenträger und macht es nicht persistent.
Beispiele
Beispiel 1: Erstellen eines dynamischen Moduls
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 : {}
Mit diesem Befehl wird ein neues dynamisches Modul mit einer Funktion namens Hello erstellt. Der Befehl gibt ein Modulobjekt zurück, das das neue dynamische Modul darstellt.
Beispiel 2: Arbeiten mit dynamischen Modulen und Get-Module und Get-Command
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 : {}
Get-Module
Get-Command Hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
In diesem Beispiel wird veranschaulicht, dass dynamische Module nicht vom Cmdlet Get-Module zurückgegeben werden. Die Elemente, die sie exportieren, werden vom Cmdlet Get-Command zurückgegeben.
Beispiel 3: Exportieren einer Variablen in die aktuelle Sitzung
New-Module -ScriptBlock {$SayHelloHelp="Type 'SayHello', a space, and a name."; function SayHello ($name) { "Hello, $name" }; Export-ModuleMember -function SayHello -Variable SayHelloHelp}
$SayHelloHelp
Type 'SayHello', a space, and a name.
SayHello Jeffrey
Hello, Jeffrey
Mit diesem Befehl wird das Cmdlet Export-ModuleMember verwendet, um eine Variable in die aktuelle Sitzung zu exportieren. Ohne den Befehl Export-ModuleMember wird nur die Funktion exportiert.
Die Ausgabe zeigt, dass sowohl die Variable als auch die Funktion in die Sitzung exportiert wurden.
Beispiel 4: Bereitstellen eines dynamischen Moduls für Get-Module
New-Module -ScriptBlock {function Hello {"Hello!"}} -name GreetingModule | Import-Module
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 : {}
Get-Command hello
CommandType Name Definition
----------- ---- ----------
Function Hello "Hello!"
Dieser Befehl zeigt, dass Sie ein dynamisches Modul für Get-Module verfügbar machen können, indem Sie das dynamische Modul an Import-Module übergeben.
Der erste Befehl verwendet einen Pipelineoperator (|), um das von New-Module generierte Modulobjekt an das Cmdlet Import-Module zu senden. Der Befehl verwendet den Name-Parameter von New-Module, um dem Modul einen Anzeigenamen zuzuweisen. Da Import-Module standardmäßig keine Objekte zurückgibt, gibt es keine Ausgabe von diesem Befehl.
Der zweite Befehl verwendet Get-Module, um die Module in der Sitzung abzurufen. Das Ergebnis zeigt, dass Get-Module das neue dynamische Modul abrufen kann.
Im dritten Befehl wird das Cmdlet Get-Command verwendet, um die Hello-Funktion abzurufen, die vom dynamischen Modul exportiert wird.
Beispiel 5: Generieren eines benutzerdefinierten Objekts mit exportierten Funktionen
$m = New-Module -ScriptBlock {function Hello ($name) {"Hello, $name"}; function Goodbye ($name) {"Goodbye, $name"}} -AsCustomObject
$m
$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();
$m.goodbye("Jane")
Goodbye, Jane
$m.hello("Manoj")
Hello, Manoj
In diesem Beispiel wird gezeigt, wie der AsCustomObject-Parameter von New-Module verwendet wird, um ein benutzerdefiniertes Objekt zu generieren, das über Skriptmethoden verfügt, die die exportierten Funktionen darstellen.
Im ersten Befehl wird das Cmdlet New-Module verwendet, um ein dynamisches Modul mit den beiden Funktionen Hello und Goodbye zu generieren. Der Befehl verwendet den Parameter AsCustomObject , um ein benutzerdefiniertes Objekt anstelle des PSModuleInfo-Objekts zu generieren, das New-Module standardmäßig generiert. Der Befehl speichert das benutzerdefinierte Objekt in der Variablen $m.
Der zweite Befehl versucht, den Wert der Variablen $m anzuzeigen. Es wird kein Inhalt angezeigt.
Der dritte Befehl verwendet einen Pipelineoperator, um das benutzerdefinierte Objekt an das Cmdlet Get-Member zu senden, das die Eigenschaften und Methoden des benutzerdefinierten Objekts anzeigt. Die Ausgabe zeigt, dass das Objekt über Skriptmethoden verfügt, die die Funktionen Hello und Goodbye darstellen.
Der vierte und fünfte Befehl verwenden die Skriptmethode format, um die Funktionen Hello und Goodbye aufzurufen.
Beispiel 6: Abrufen der Ergebnisse des Skriptblocks
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Mit diesem Befehl wird der Parameter ReturnResult verwendet, um die Ergebnisse der Ausführung des Skriptblocks anzufordern, anstatt ein Modulobjekt anzufordern.
Der Skriptblock im neuen Modul definiert die SayHello-Funktion und ruft dann die Funktion auf.
Parameter
-ArgumentList
Gibt ein Array von Argumenten an, die Parameterwerte sind, die an den Skriptblock übergeben werden.
Parametereigenschaften
| Typ: | Object[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Argumente |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-AsCustomObject
Gibt an, dass dieses Cmdlet ein benutzerdefiniertes Objekt zurückgibt, das das dynamische Modul darstellt. Die Modulmitglieder werden als Skriptmethoden des benutzerdefinierten Objekts implementiert, jedoch nicht in die Sitzung importiert. Sie können das benutzerdefinierte Objekt in einer Variablen speichern und die Elemente mithilfe der Punktnotation aufrufen.
Wenn das Modul mehrere Elemente mit demselben Namen aufweist, z. B. eine Funktion und eine Variable mit dem Namen A, kann nur ein Element mit jedem Namen über das benutzerdefinierte Objekt zugegriffen werden.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Cmdlet
Gibt ein Array von Cmdlets an, die von diesem Cmdlet aus dem Modul in die aktuelle Sitzung exportiert werden. 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 keine Cmdlets in einem Skriptblock definieren, aber ein dynamisches Modul kann Cmdlets enthalten, wenn sie die Cmdlets aus einem binären Modul importiert.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Function
Gibt eine Reihe von Funktionen an, die dieses Cmdlet aus dem Modul in die aktuelle Sitzung exportiert. Geben Sie eine durch Trennzeichen getrennte Liste von Funktionen ein. Platzhalterzeichen sind zulässig. Standardmäßig werden alle in einem Modul definierten Funktionen exportiert.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Name
Gibt einen Namen für das neue Modul an. Sie können auch einen Modulnamen an New-Module übergeben.
Der Standardwert ist ein automatisch generierter Name, der mit __DynamicModule_ beginnt und auf eine GUID folgt, die den Pfad des dynamischen Moduls angibt.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Name
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-ReturnResult
Gibt an, dass dieses Cmdlet den Skriptblock ausführt und die Skriptblockergebnisse zurückgibt, anstatt ein Modulobjekt zurückzugeben.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-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.
Parametereigenschaften
| Typ: | ScriptBlock |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
Sie können einen Modulnamen an dieses Cmdlet weiterleiten.
Ausgaben
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
Dieses Cmdlet generiert standardmäßig ein PSModuleInfo-Objekt . Wenn Sie den AsCustomObject Parameter verwenden, wird ein PSCustomObject--Objekt generiert. Wenn Sie den Parameter ReturnResult verwenden, gibt er das Ergebnis der Auswertung des Skriptblocks im dynamischen Modul zurück.
Hinweise
- Sie können auch auf
New-Moduleanhand des Aliasnmoverweisen. Weitere Informationen finden Sie unter about_Aliases.