New-Module
Skapar en ny dynamisk modul som bara finns i minnet.
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>]
Description
Cmdleten New-Module skapar en dynamisk modul från ett skriptblock. Medlemmarna i den dynamiska modulen, till exempel funktioner och variabler, är omedelbart tillgängliga i sessionen och förblir tillgängliga tills du stänger sessionen.
Precis som statiska moduler exporteras som standard cmdletar och funktioner i en dynamisk modul och variablerna och aliasen är inte det. Du kan dock använda cmdleten Export-ModuleMember och parametrarna för New-Module för att åsidosätta standardvärdena.
Du kan också använda parametern AsCustomObject för New-Module för att returnera den dynamiska modulen som ett anpassat objekt. Medlemmarna i modulerna, till exempel funktioner, implementeras som skriptmetoder för det anpassade objektet i stället för att importeras till sessionen.
Dynamiska moduler finns bara i minnet, inte på disken. Liksom alla moduler körs medlemmarna i dynamiska moduler i ett privat modulomfång som är underordnat det globala omfånget. Get-Module kan inte hämta en dynamisk modul, men Get-Command kan hämta de exporterade medlemmarna.
Om du vill göra en dynamisk modul tillgänglig för Get-Moduleskickar du ett kommandot New-Module till Import-Module eller skickar modulobjektet som New-Module återgår till Import-Module. Den här åtgärden lägger till den dynamiska modulen i listan Get-Module, men den sparar inte modulen på disken eller gör den beständig.
Exempel
Exempel 1: Skapa en dynamisk modul
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 : {}
Det här kommandot skapar en ny dynamisk modul med en funktion som heter Hello. Kommandot returnerar ett modulobjekt som representerar den nya dynamiska modulen.
Exempel 2: Arbeta med dynamiska moduler och Get-Module och 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!"
Det här exemplet visar att dynamiska moduler inte returneras av cmdleten Get-Module. De medlemmar som de exporterar returneras av cmdleten Get-Command.
Exempel 3: Exportera en variabel till den aktuella sessionen
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
Det här kommandot använder cmdleten Export-ModuleMember för att exportera en variabel till den aktuella sessionen. Utan kommandot Export-ModuleMember exporteras endast funktionen.
Utdata visar att både variabeln och funktionen exporterades till sessionen.
Exempel 4: Gör en dynamisk modul tillgänglig 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!"
Det här kommandot visar att du kan göra en dynamisk modul tillgänglig för Get-Module- genom att skicka den dynamiska modulen till Import-Module.
Det första kommandot använder en pipelineoperator (|) för att skicka modulobjektet som New-Module genererar till cmdleten Import-Module. Kommandot använder parametern Name i New-Module för att tilldela modulen ett eget namn. Eftersom Import-Module inte returnerar några objekt som standard, finns det inga utdata från det här kommandot.
Det andra kommandot använder Get-Module för att hämta modulerna i sessionen. Resultatet visar att Get-Module kan hämta den nya dynamiska modulen.
Det tredje kommandot använder cmdleten Get-Command för att hämta funktionen Hello som den dynamiska modulen exporterar.
Exempel 5: Generera ett anpassat objekt som har exporterade funktioner
$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
Det här exemplet visar hur du använder parametern AsCustomObject för New-Module för att generera ett anpassat objekt med skriptmetoder som representerar de exporterade funktionerna.
Det första kommandot använder cmdleten New-Module för att generera en dynamisk modul med två funktioner, Hello och Goodbye. Kommandot använder parametern AsCustomObject för att generera ett anpassat objekt i stället för PSModuleInfo-objektet som New-Module genererar som standard. Kommandot sparar det anpassade objektet i variabeln $m.
Det andra kommandot försöker visa värdet för variabeln $m. Inget innehåll visas.
Det tredje kommandot använder en pipelineoperator för att skicka det anpassade objektet till cmdleten Get-Member, som visar egenskaperna och metoderna för det anpassade objektet. Utdata visar att objektet har skriptmetoder som representerar funktionerna Hello och Goodbye.
De fjärde och femte kommandona använder skriptmetodformatet för att anropa funktionerna Hello och Goodbye.
Exempel 6: Hämta resultatet av skriptblocket
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Det här kommandot använder parametern ReturnResult för att begära resultatet av att köra skriptblocket i stället för att begära ett modulobjekt.
Skriptblocket i den nya modulen definierar funktionen SayHello och anropar sedan funktionen.
Parametrar
-ArgumentList
Anger en matris med argument som är parametervärden som skickas till skriptblocket.
Typ: | Object[] |
Alias: | Args |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-AsCustomObject
Anger att den här cmdleten returnerar ett anpassat objekt som representerar den dynamiska modulen. Modulmedlemmarna implementeras som skriptmetoder för det anpassade objektet, men de importeras inte till sessionen. Du kan spara det anpassade objektet i en variabel och använda punkt notation för att anropa medlemmarna.
Om modulen har flera medlemmar med samma namn, till exempel en funktion och en variabel som båda heter A, kan endast en medlem med varje namn nås från det anpassade objektet.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Cmdlet
Anger en matris med cmdletar som denna cmdlet exporterar från modulen till den aktuella sessionen. Ange en kommaavgränsad lista över cmdletar. Jokertecken tillåts. Som standard exporteras alla cmdletar i modulen.
Du kan inte definiera cmdletar i ett skriptblock, men en dynamisk modul kan innehålla cmdletar om den importerar cmdletarna från en binär modul.
Typ: | String[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Function
Anger en matris med funktioner som den här cmdleten exporterar från modulen till den aktuella sessionen. Ange en kommaavgränsad lista över funktioner. Jokertecken tillåts. Som standard exporteras alla funktioner som definierats i en modul.
Typ: | String[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | True |
-Name
Anger ett namn för den nya modulen. Du kan också skicka ett modulnamn till New-Module.
Standardvärdet är ett automatiskt genererat namn som börjar med __DynamicModule_
och följs av ett GUID som anger sökvägen till den dynamiska modulen.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-ReturnResult
Anger att den här cmdleten kör skriptblocket och returnerar skriptblockresultatet i stället för att returnera ett modulobjekt.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-ScriptBlock
Anger innehållet i den dynamiska modulen. Omslut innehållet i klammerparenteser ( { } ) för att skapa ett skriptblock. Den här parametern krävs.
Typ: | ScriptBlock |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan skicka ett modulnamn till den här cmdleten.
Utdata
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
Den här cmdleten genererar som standard ett PSModuleInfo- objekt. Om du använder parametern AsCustomObject genereras ett PSCustomObject- objekt. Om du använder parametern ReturnResult returneras resultatet av utvärderingen av skriptblocket i den dynamiska modulen.
Kommentarer
- Du kan också referera till
New-Module
med dess alias,nmo
. Mer information finns i about_Aliases.