New-Module
Hiermee maakt u een nieuwe dynamische module die alleen in het geheugen bestaat.
Syntaxis
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>]
Description
De New-Module
-cmdlet maakt een dynamische module op basis van een scriptblok. De leden van de dynamische module, zoals functies en variabelen, zijn onmiddellijk beschikbaar in de sessie en blijven beschikbaar totdat u de sessie sluit.
Net als bij statische modules worden de cmdlets en functies in een dynamische module standaard geëxporteerd en zijn de variabelen en aliassen niet. U kunt echter de Export-ModuleMember cmdlet en de parameters van New-Module
gebruiken om de standaardinstellingen te overschrijven.
U kunt ook de parameter AsCustomObject van New-Module
gebruiken om de dynamische module als een aangepast object te retourneren. De leden van de modules, zoals functies, worden geïmplementeerd als scriptmethoden van het aangepaste object in plaats van in de sessie te worden geïmporteerd.
Dynamische modules bestaan alleen in het geheugen, niet op schijf. Net als alle modules worden de leden van dynamische modules uitgevoerd in een privémodulebereik dat een onderliggend element van het globale bereik is. Get-Module kan geen dynamische module ophalen, maar Get-Command kunnen de geëxporteerde leden ophalen.
Als u een dynamische module beschikbaar wilt maken voor Get-Module
, sluist u een New-Module
opdracht door naar Import-Module of sluist u het moduleobject dat New-Module
terugkeert naar Import-Module
. Met deze actie wordt de dynamische module toegevoegd aan de Get-Module
lijst, maar de module wordt niet op de schijf opgeslagen of permanent gemaakt.
Voorbeelden
Voorbeeld 1: Een dynamische module maken
In dit voorbeeld wordt een nieuwe dynamische module gemaakt met een functie met de naam Hello
. De opdracht retourneert een moduleobject dat de nieuwe dynamische module vertegenwoordigt.
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 : {}
Voorbeeld 2: Werken met dynamische modules en Get-Module en Get-Command
In dit voorbeeld ziet u dat dynamische modules niet worden geretourneerd door de Get-Module
-cmdlet. De leden die ze exporteren, worden geretourneerd door de Get-Command
cmdlet.
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!"
Voorbeeld 3: Een variabele exporteren naar de huidige sessie
In dit voorbeeld wordt de cmdlet Export-ModuleMember
gebruikt om een variabele te exporteren naar de huidige sessie.
Zonder de opdracht Export-ModuleMember
wordt alleen de functie geëxporteerd.
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
In de uitvoer ziet u dat zowel de variabele als de functie zijn geëxporteerd naar de sessie.
Voorbeeld 4: Een dynamische module beschikbaar maken voor Get-Module
In dit voorbeeld ziet u dat u een dynamische module beschikbaar kunt maken voor Get-Module
door de dynamische module om te zetten in Import-Module
.
New-Module
maakt een moduleobject dat wordt doorgesluisd naar de cmdlet Import-Module
. De parameter Name van New-Module
wijst een beschrijvende naam toe aan de module. Omdat Import-Module
standaard geen objecten retourneert, is er geen uitvoer van deze opdracht.
Get-Module
dat de GreetingModule- is geïmporteerd in de huidige sessie.
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!"
De Get-Command
-cmdlet toont de Hello
-functie die door de dynamische module wordt geëxporteerd.
Voorbeeld 5: Een aangepast object genereren met geëxporteerde functies
In dit voorbeeld ziet u hoe u de parameter AsCustomObject van New-Module
gebruikt om een aangepast object te genereren met scriptmethoden die de geëxporteerde functies vertegenwoordigen.
De cmdlet New-Module
maakt een dynamische module met twee functies, Hello
en Goodbye
. De parameter AsCustomObject maakt een aangepast object in plaats van het PSModuleInfo--object dat standaard New-Module
genereert. Dit aangepaste object wordt opgeslagen in de variabele $m
.
De variabele $m
lijkt geen toegewezen waarde te hebben.
$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
Als u $m
naar de cmdlet Get-Member
, worden de eigenschappen en methoden van het aangepaste object weergegeven. In de uitvoer ziet u dat het object scriptmethoden heeft die de Hello
- en Goodbye
-functies vertegenwoordigen.
Ten slotte noemen we deze scriptmethoden en geven we de resultaten weer.
Voorbeeld 6: de resultaten van het scriptblok ophalen
In dit voorbeeld wordt de parameter ReturnResult gebruikt om de resultaten van het uitvoeren van het scriptblok aan te vragen in plaats van een moduleobject aan te vragen. Het scriptblok in de nieuwe module definieert de SayHello
functie en roept vervolgens de functie aan.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parameters
-ArgumentList
Hiermee geeft u een matrix van argumenten op die parameterwaarden zijn die worden doorgegeven aan het scriptblok. Zie about_Splattingvoor meer informatie over het gedrag van ArgumentList.
Type: | Object[] |
Aliassen: | Args |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-AsCustomObject
Geeft aan dat deze cmdlet een aangepast object retourneert dat de dynamische module vertegenwoordigt. De moduleleden worden geïmplementeerd als scriptmethoden van het aangepaste object, maar worden niet geïmporteerd in de sessie. U kunt het aangepaste object opslaan in een variabele en puntnotatie gebruiken om de leden aan te roepen.
Als de module meerdere leden met dezelfde naam heeft, zoals een functie en een variabele met de naam A, kan slechts één lid met elke naam worden geopend vanuit het aangepaste object.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Cmdlet
Hiermee geeft u een matrix van cmdlets op die deze cmdlet exporteert van de module naar de huidige sessie. Voer een door komma's gescheiden lijst met cmdlets in. Jokertekens zijn toegestaan. Standaard worden alle cmdlets in de module geëxporteerd.
U kunt geen cmdlets definiëren in een scriptblok, maar een dynamische module kan cmdlets bevatten als de cmdlets uit een binaire module worden geïmporteerd.
Type: | String[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-Function
Hiermee geeft u een matrix van functies op die met deze cmdlet vanuit de module naar de huidige sessie worden geëxporteerd. Voer een door komma's gescheiden lijst met functies in. Jokertekens zijn toegestaan. Standaard worden alle functies die in een module zijn gedefinieerd, geëxporteerd.
Type: | String[] |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | True |
-Name
Hiermee geeft u een naam voor de nieuwe module. U kunt ook een modulenaam doorsluisen naar New-Module.
De standaardwaarde is een automatisch gegenereerde naam die begint met __DynamicModule_
en wordt gevolgd door een GUID die het pad van de dynamische module aangeeft.
Type: | String |
Position: | 0 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | True |
Jokertekens accepteren: | False |
-ReturnResult
Geeft aan dat met deze cmdlet het scriptblok wordt uitgevoerd en dat het scriptblok resultaten retourneert in plaats van een moduleobject te retourneren.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Vereist: | False |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
-ScriptBlock
Hiermee geeft u de inhoud van de dynamische module. Plaats de inhoud tussen accolades ({}
) om een scriptblok te maken. Deze parameter is vereist.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Vereist: | True |
Pijplijninvoer accepteren: | False |
Jokertekens accepteren: | False |
Invoerwaarden
U kunt een modulenaam doorsluisen naar deze cmdlet.
Uitvoerwaarden
Met deze cmdlet wordt standaard een PSModuleInfo--object gegenereerd.
Als u de parameter AsCustomObject gebruikt, wordt er een PSCustomObject-object gegenereerd.
Als u de parameter ReturnResult gebruikt, retourneert deze cmdlet het resultaat van het evalueren van het scriptblok in de dynamische module.
Notities
Windows PowerShell bevat de volgende aliassen voor New-Module
:
nmo
U kunt ook naar New-Module
verwijzen met de alias nmo
. Zie about_Aliasesvoor meer informatie.