New-Module
Erstellt ein neues dynamisches Modul, das nur im Arbeitsspeicher vorhanden ist.
Syntax
New-Module
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
New-Module
[-Name] <String>
[-ScriptBlock] <ScriptBlock>
[-Function <String[]>]
[-Cmdlet <String[]>]
[-ReturnResult]
[-AsCustomObject]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Beschreibung
Das New-Module
Cmdlet erstellt ein dynamisches Modul aus einem Skriptblock. Die Elemente des dynamischen Moduls, wie z. B. Funktionen und Variablen, sind in der Sitzung sofort verfügbar und bleiben verfügbar, bis Sie die Sitzung schließen.
Wie bei statischen Modulen werden in einem dynamischen Modul die Cmdlets und Funktionen 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 Standardwerte außer Kraft zu setzen.
Sie können auch den AsCustomObject-Parameter von New-Module
verwenden, um das dynamische Modul als benutzerdefiniertes Objekt zurückzugeben. Die Elemente der Module, wie z. B. Funktionen, werden als Skriptmethoden des benutzerdefinierten Objekts implementiert, statt 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; Get-Command kann jedoch die exportierten Elemente abrufen.
Um ein dynamisches Modul für verfügbar zu Get-Module
machen, übergeben Sie einen New-Module
Befehl an Import-Module, oder übergeben Sie das Modulobjekt, das New-Module
an Import-Module
zurückgibt. Durch diese Aktion wird das dynamische Modul der Get-Module
-Liste hinzugefügt, aber das Modul wird nicht auf dem Datenträger gespeichert oder persistent gemacht.
Beispiele
Beispiel 1: Create eines dynamischen Moduls
In diesem Beispiel wird ein neues dynamisches Modul mit einer Funktion namens Hello
erstellt. Der Befehl gibt ein Modulobjekt zurück, das das neue dynamische Modul darstellt.
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 : {}
Beispiel 2: Arbeiten mit dynamischen Modulen und Get-Module und Get-Command
In diesem Beispiel wird veranschaulicht, dass dynamische Module vom Get-Module
Cmdlet nicht zurückgegeben werden. Die Elemente, die sie exportieren, werden vom Get-Command
Cmdlet zurückgegeben.
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!"
Beispiel 3: Exportieren einer Variablen in die aktuelle Sitzung
In diesem Beispiel wird das Export-ModuleMember
Cmdlet verwendet, um eine Variable in die aktuelle Sitzung zu exportieren.
Ohne den Export-ModuleMember
Befehl wird nur die Funktion exportiert.
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
Die Ausgabe zeigt, dass die Variable und die Funktion in die Sitzung exportiert wurden.
Beispiel 4: Verfügbarmachen eines dynamischen Moduls für Get-Module
In diesem Beispiel wird veranschaulicht, dass Sie ein dynamisches Modul zur Verfügung stellen können, Get-Module
indem Sie das dynamische Modul an Import-Module
weiterleiten.
New-Module
erstellt ein Modulobjekt, das an das Import-Module
Cmdlet weitergeleitet wird. Der Name-Parameter von New-Module
weist dem Modul einen Anzeigenamen zu. Da Import-Module
standardmäßig keine -Objekte zurückgegeben werden, gibt es keine Ausgabe dieses Befehls. Get-Module
, dass greetingModule in die aktuelle Sitzung importiert wurde.
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!"
Das Get-Command
Cmdlet zeigt die Hello
Funktion an, die das dynamische Modul exportiert.
Beispiel 5: Generieren eines benutzerdefinierten Objekts mit exportierten Funktionen
In diesem Beispiel wird gezeigt, wie sie den AsCustomObject-Parameter von verwenden, um ein benutzerdefiniertes New-Module
Objekt zu generieren, das über Skriptmethoden verfügt, die die exportierten Funktionen darstellen.
Das New-Module
Cmdlet erstellt ein dynamisches Modul mit zwei Funktionen: Hello
und Goodbye
. Der AsCustomObject-Parameter erstellt ein benutzerdefiniertes Objekt anstelle des PSModuleInfo-Objekts , das New-Module
standardmäßig generiert wird. Dieses benutzerdefinierte Objekt wird in der $m
Variablen gespeichert.
Die $m
Variable scheint keinen zugewiesenen Wert zu haben.
$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
Durch das Piping $m
an das Get-Member
Cmdlet werden die Eigenschaften und Methoden des benutzerdefinierten Objekts angezeigt. Die Ausgabe zeigt, dass das Objekt über Skriptmethoden verfügt, die die Hello
Funktionen und Goodbye
darstellen.
Schließlich rufen wir diese Skriptmethoden auf und zeigen die Ergebnisse an.
Beispiel 6: Abrufen der Ergebnisse des Skriptblocks
In diesem Beispiel wird der ReturnResult-Parameter 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.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parameter
-ArgumentList
Gibt ein Array von Argumenten an, bei denen es sich um Parameterwerte handelt, die an den Skriptblock übergeben werden. Weitere Informationen zum Verhalten von ArgumentList finden Sie unter about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsCustomObject
Gibt an, dass dieses Cmdlet ein benutzerdefiniertes Objekt zurückgibt, das das dynamische Modul darstellt. Die Modulelemente werden als Skriptmethoden des benutzerdefinierten Objekts implementiert, aber sie werden nicht in die Sitzung importiert. Sie können das benutzerdefinierte Objekt in einer Variablen speichern und die punktierte Schreibweise verwenden, um die Elemente aufzurufen.
Wenn das Modul über mehrere Member mit demselben Namen verfügt, z. B. eine Funktion und eine Variable mit dem Namen A, kann über das benutzerdefinierte Objekt nur auf ein Element mit jedem Namen zugegriffen werden.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Cmdlet
Gibt ein Array von Cmdlets an, die dieses Cmdlet aus dem Modul in die aktuelle Sitzung exportiert. Geben Sie eine kommagetrennte 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 es die Cmdlets aus einem binären Modul importiert.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Function
Gibt ein Array von Funktionen an, die dieses Cmdlet aus dem Modul in die aktuelle Sitzung exportiert. Geben Sie eine kommagetrennte Liste von Funktionen ein. Platzhalterzeichen sind zulässig. Standardmäßig werden alle in einem Modul definierten Funktionen exportiert.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-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 gefolgt von einer GUID, die den Pfad des dynamischen Moduls angibt.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ReturnResult
Gibt an, dass dieses Cmdlet den Skriptblock ausführt und die Ergebnisse des Skriptblocks zurückgibt, anstatt ein Modulobjekt zurückzugeben.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können einen Modulnamen an dieses Cmdlet übergeben.
Ausgaben
Dieses Cmdlet generiert standardmäßig ein PSModuleInfo-Objekt .
Wenn Sie den AsCustomObject-Parameter verwenden, generiert er ein PSCustomObject-Objekt .
Wenn Sie den ReturnResult-Parameter verwenden, gibt dieses Cmdlet das Ergebnis der Auswertung des Skriptblocks im dynamischen Modul zurück.
Hinweise
PowerShell enthält die folgenden Aliase für New-Module
:
- Alle Plattformen:
nmo