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-Module
skickar du ett New-Module
kommando 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
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.
Utan kommandot Export-ModuleMember
exporteras endast 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 för Get-Module
genom att skicka den dynamiska modulen till Import-Module
.
New-Module
skapar ett modulobjekt som skickas till cmdleten Import-Module
. Parametern Name i New-Module
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
att 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 AsCustomObject för New-Module
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 det PSModuleInfo- objekt som New-Module
genererar som 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 $m
till cmdleten Get-Member
visas egenskaperna och metoderna för det anpassade objektet. Utdata visar att objektet har skriptmetoder som representerar funktionerna Hello
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 funktionen SayHello
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 ArgumentListfinns i about_Splatting.
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
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 returnerar den här cmdleten resultatet av utvärderingen av skriptblocket i den dynamiska modulen.
Kommentarer
PowerShell innehåller följande alias för New-Module
:
- Alla plattformar:
nmo