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 New-Module
för för att åsidosätta standardvärdena.
Du kan också använda parametern New-Module
AsCustomObject för 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å disk. Precis som 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-Module
kan du skicka ett New-Module
kommando till Import-Module eller skicka modulobjektet som New-Module
återgår till Import-Module
. Den här åtgärden lägger till den dynamiska modulen i Get-Module
listan, men den sparar inte modulen på disken eller gör den beständig.
Exempel
Exempel 1: Skapa en dynamisk modul
I det här exemplet skapas en ny dynamisk modul med en funktion som heter Hello
. Kommandot returnerar ett modulobjekt som representerar den nya dynamiska modulen.
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 : {}
Exempel 2: Arbeta med dynamiska moduler och Get-Module och Get-Command
Det här exemplet visar att dynamiska moduler inte returneras av cmdleten Get-Module
. De medlemmar som de exporterar returneras av cmdleten 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!"
Exempel 3: Exportera en variabel till den aktuella sessionen
I det här exemplet används cmdleten Export-ModuleMember
för att exportera en variabel till den aktuella sessionen.
Export-ModuleMember
Utan kommandot exporteras bara funktionen.
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
Utdata visar att både variabeln och funktionen exporterades till sessionen.
Exempel 4: Gör en dynamisk modul tillgänglig för Get-Module
Det här exemplet visar att du kan göra en dynamisk modul tillgänglig genom att Get-Module
skicka den dynamiska modulen till Import-Module
.
New-Module
skapar ett modulobjekt som skickas till cmdleten Import-Module
. Parametern New-Module
Namn i tilldelar modulen ett eget namn. Eftersom Import-Module
inte returnerar några objekt som standard finns det inga utdata från det här kommandot. Get-Module
GreetingModule har importerats till den aktuella sessionen.
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!"
Cmdleten Get-Command
visar den Hello
funktion som den dynamiska modulen exporterar.
Exempel 5: Generera ett anpassat objekt som har exporterade funktioner
Det här exemplet visar hur du använder parametern New-Module
AsCustomObject för för att generera ett anpassat objekt som har skriptmetoder som representerar de exporterade funktionerna.
Cmdleten New-Module
skapar en dynamisk modul med två funktioner, Hello
och Goodbye
. Parametern AsCustomObject skapar ett anpassat objekt i stället för PSModuleInfo-objektet som genererar som New-Module
standard. Det här anpassade objektet sparas i variabeln $m
.
Variabeln $m
verkar inte ha något tilldelat värde.
$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
Om du dirigerar $m
till cmdleten Get-Member
visas egenskaperna och metoderna för det anpassade objektet. Utdata visar att objektet har skriptmetoder som representerar Hello
funktionerna och Goodbye
.
Slutligen anropar vi dessa skriptmetoder och visar resultatet.
Exempel 6: Hämta resultatet av skriptblocket
I det här exemplet används 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 SayHello
funktionen och anropar sedan funktionen.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parametrar
-ArgumentList
Anger en matris med argument som är parametervärden som skickas till skriptblocket. Mer information om beteendet för ArgumentList finns i about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsCustomObject
Anger att denna cmdlet 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 punktnotation 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Function
Anger en matris med funktioner som denna cmdlet 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ReturnResult
Anger att den här cmdleten kör skriptblocket och returnerar skriptblockets resultat i stället för att returnera ett modulobjekt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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.