Delen via


New-Module

Hiermee maakt u een nieuwe dynamische module die alleen in het geheugen bestaat.

Syntax

ScriptBlock (Standaard)

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>]

Description

Met de cmdlet New-Module maakt u 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 cmdlets en functies in een dynamische module standaard wel geëxporteerd, maar 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 private modulescope die een onderliggend element van de globale scope 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 opdracht New-Module naar Import-Module of sluist u het moduleobject door dat New-Module terugkeert naar Import-Module. Met deze actie wordt de dynamische module toegevoegd aan de lijst Get-Module, maar wordt de module niet op schijf opgeslagen of permanent gemaakt.

Voorbeelden

Voorbeeld 1: Een dynamische module maken

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

Met deze opdracht maakt u een nieuwe dynamische module met een functie met de naam Hello. De opdracht retourneert een moduleobject dat de nieuwe dynamische module vertegenwoordigt.

Voorbeeld 2: Werken met dynamische modules en Get-Module en 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 dit voorbeeld ziet u dat dynamische modules niet worden geretourneerd door de cmdlet Get-Module. De leden die ze exporteren, worden geretourneerd door de cmdlet Get-Command.

Voorbeeld 3: Een variabele exporteren naar de huidige sessie

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

Met deze opdracht 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.

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

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

Met deze opdracht wordt gedemonstreerd dat u een dynamische module beschikbaar kunt maken voor Get-Module- door de dynamische module door te zetten in Import-Module-.

De eerste opdracht maakt gebruik van een pijplijnoperator (|) om het moduleobject te verzenden dat New-Module genereert naar de Import-Module cmdlet. De opdracht gebruikt de parameter Name van New-Module om een beschrijvende naam toe te wijzen aan de module. Omdat Import-Module- standaard geen objecten retourneert, is er geen uitvoer van deze opdracht.

De tweede opdracht maakt gebruik van Get-Module om de modules in de sessie op te halen. Het resultaat laat zien dat Get-Module de nieuwe dynamische module kan ophalen.

De derde opdracht maakt gebruik van de cmdlet Get-Command om de hello-functie op te halen die door de dynamische module wordt geëxporteerd.

Voorbeeld 5: Een aangepast object genereren met geëxporteerde functies

$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 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 eerste opdracht maakt gebruik van de cmdlet New-Module om een dynamische module te genereren met twee functies: Hello en Goodbye. De opdracht maakt gebruik van de parameter AsCustomObject om een aangepast object te genereren in plaats van het PSModuleInfo-object dat nieuwe module standaard genereert. Met de opdracht wordt het aangepaste object opgeslagen in de $m variabele.

Met de tweede opdracht wordt geprobeerd de waarde van de $m variabele weer te geven. Er wordt geen inhoud weergegeven.

De derde opdracht maakt gebruik van een pijplijnoperator om het aangepaste object te verzenden naar de cmdlet Get-Member, waarin de eigenschappen en methoden van het aangepaste object worden weergegeven. In de uitvoer ziet u dat het object scriptmethoden heeft die de functies Hello en Goodbye vertegenwoordigen.

De vierde en vijfde opdrachten gebruiken de indeling van de scriptmethode om de functies Hello en Goodbye aan te roepen.

Voorbeeld 6: de resultaten van het scriptblok ophalen

New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!

Met deze opdracht 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 functie SayHello en roept vervolgens de functie aan.

Parameters

-ArgumentList

Hiermee geeft u een matrix van argumenten op die parameterwaarden zijn die worden doorgegeven aan het scriptblok.

Parametereigenschappen

Type:

Object[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False
Aliassen:Argumenten

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:

String[]

Default value:None
Ondersteunt jokertekens:True
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-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.

Parametereigenschappen

Type:String
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

Name
Position:0
Verplicht:True
Waarde uit pijplijn:True
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten: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.

Parametereigenschappen

Type:SwitchParameter
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:Named
Verplicht:False
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

-ScriptBlock

Geeft de inhoud van de dynamische module. Plaats de inhoud tussen accolades ({ }) om een scriptblok te maken. Deze parameter is vereist.

Parametereigenschappen

Type:ScriptBlock
Default value:None
Ondersteunt jokertekens:False
DontShow:False

Parametersets

(All)
Position:1
Verplicht:True
Waarde uit pijplijn:False
Waarde uit pijplijn op eigenschapsnaam:False
Waarde van resterende argumenten:False

CommonParameters

Deze cmdlet ondersteunt de algemene parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction en -WarningVariable. Zie about_CommonParametersvoor meer informatie.

Invoerwaarden

String

U kunt een modulenaam doorsluisen naar deze cmdlet.

Uitvoerwaarden

System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None

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, wordt het resultaat geretourneerd van het evalueren van het scriptblok in de dynamische module.

Notities

  • U kunt ook naar New-Module verwijzen met de alias nmo. Zie about_Aliasesvoor meer informatie.