New-Module

Létrehoz egy új dinamikus modult, amely csak a memóriában létezik.

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

A New-Module parancsmag egy dinamikus modult hoz létre egy szkriptblokkból. A dinamikus modul tagjai, például a függvények és a változók, azonnal elérhetők a munkamenetben, és a munkamenet bezárásáig elérhetők maradnak.

A statikus modulokhoz hasonlóan alapértelmezés szerint a dinamikus modul parancsmagjait és függvényeit exportálja a rendszer, és a változók és aliasok nem. Az Export-ModuleMember parancsmagot és az alapértelmezett értékek felülbírálásának New-Module paramétereit azonban használhatja.

A dinamikus modul egyéni objektumként való visszaadásához az AsCustomObject paramétert New-Module is használhatja. A modulok tagjai, például a függvények, az egyéni objektum szkriptmetódusaiként vannak implementálva, ahelyett, hogy importálva lettek a munkamenetbe.

A dinamikus modulok csak a memóriában léteznek, lemezen nem. Mint minden modul, a dinamikus modulok tagjai is egy privát modul hatókörében futnak, amely a globális hatókör gyermekeleme. A Get-Module nem tud dinamikus modult lekérni, de a Get-Command lekérheti az exportált tagokat.

Ha elérhetővé szeretne tenni egy dinamikus modult Get-Module, csövezhet egy New-Module parancsot az Import-Modulebe, vagy a visszakerülő New-ModuleImport-Modulemodulobjektumot. Ez a művelet hozzáadja a dinamikus modult a Get-Module listához, de nem menti a modult a lemezre, és nem teszi állandóvá.

Példák

1. példa: Dinamikus modul létrehozása

Ez a példa létrehoz egy új dinamikus modult egy .Hello A parancs egy modulobjektumot ad vissza, amely az új dinamikus modult jelöli.

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

2. példa: Dinamikus modulok és Get-Module és Get-Command használata

Ez a példa azt mutatja be, hogy a parancsmag nem adja vissza a Get-Module dinamikus modulokat. Az exportált tagokat a Get-Command parancsmag adja vissza.

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

3. példa: Változó exportálása az aktuális munkamenetbe

Ez a példa a Export-ModuleMember parancsmaggal exportál egy változót az aktuális munkamenetbe. Export-ModuleMember A parancs nélkül csak a függvény lesz exportálva.

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

A kimenet azt mutatja, hogy a változó és a függvény is exportálva lett a munkamenetbe.

4. példa: Dinamikus modul elérhetővé tétele a Get-Module számára

Ez a példa bemutatja, hogy egy dinamikus modult elérhetővé Get-Module tehet, ha a dinamikus modult a következőre Import-Modulepipálja.

New-Module létrehoz egy modulobjektumot, amely a Import-Module parancsmaghoz van csövezve. A Modul Név paramétere New-Module egy rövid nevet rendel a modulhoz. Mivel Import-Module alapértelmezés szerint nem ad vissza objektumokat, ebből a parancsból nincs kimenet. Get-Module hogy a GreetingModule importálva lett az aktuális munkamenetbe.

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

A Get-Command parancsmag azt a függvényt Hello jeleníti meg, amelyet a dinamikus modul exportál.

5. példa: Exportált függvényeket tartalmazó egyéni objektum létrehozása

Ez a példa bemutatja, hogyan hozhat létre olyan egyéni objektumot az AsCustomObject paraméterrel New-Module , amely az exportált függvényeket képviselő szkriptmetódusokkal rendelkezik.

A New-Module parancsmag létrehoz egy dinamikus modult két függménnyel és GoodbyeHello . Az AsCustomObject paraméter létrehoz egy egyéni objektumot az alapértelmezés szerint generált PSModuleInfo objektum New-Module helyett. Ezt az egyéni objektumot a rendszer a $m változóba menti. Úgy tűnik, hogy a $m változó nem rendelkezik hozzárendelt értékkel.

$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

A parancsmagra való Get-Member pipálás $m megjeleníti az egyéni objektum tulajdonságait és metódusait. A kimenet azt mutatja, hogy az objektum szkriptmetódusokkal rendelkezik, amelyek a függvényeket és Goodbye a függvényeket Hello jelölik. Végül meghívjuk ezeket a szkriptmetszeteket, és megjelenítjük az eredményeket.

6. példa: A szkriptblokk eredményeinek lekérése

Ez a példa a ReturnResult paraméterrel kéri le a szkriptblokk futtatásának eredményét modulobjektum kérése helyett. Az új modul szkriptblokkja határozza meg a függvényt SayHello , majd meghívja a függvényt.

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

Hello, World!

Paraméterek

-ArgumentList

Olyan argumentumtömböt ad meg, amely paraméterértékeket ad át a szkriptblokknak. Az Argumentumlista működésével kapcsolatos további információkért lásd: about_Splatting.

Type:Object[]
Aliases:Args
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsCustomObject

Azt jelzi, hogy ez a parancsmag egy egyéni objektumot ad vissza, amely a dinamikus modult jelöli. A modultagok az egyéni objektum szkriptmetódusaiként vannak implementálva, de nem importálhatók a munkamenetbe. Az egyéni objektumot mentheti egy változóban, és pont jelöléssel meghívhatja a tagokat.

Ha a modul több azonos nevű taggal rendelkezik, például egy függvénysel és egy A nevű változóval, az egyéni objektumból csak egy tag érhető el mindegyik névvel.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Cmdlet

A parancsmagok tömbjének megadása, amelyeket ez a parancsmag exportál a modulból az aktuális munkamenetbe. Adja meg a parancsmagok vesszővel tagolt listáját. A helyettesítő karakterek használata engedélyezett. Alapértelmezés szerint a modul összes parancsmagja exportálva lesz.

Parancsmagokat nem definiálhat szkriptblokkokban, de egy dinamikus modul tartalmazhat parancsmagokat, ha bináris modulból importálja a parancsmagokat.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Function

Olyan függvénytömböt ad meg, amelyet ez a parancsmag exportál a modulból az aktuális munkamenetbe. Adja meg a függvények vesszővel tagolt listáját. A helyettesítő karakterek használata engedélyezett. Alapértelmezés szerint a modulban definiált összes függvény exportálva lesz.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Name

Megadja az új modul nevét. A modul nevét a New-Modulere is be lehet csövezni.

Az alapértelmezett érték egy automatikusan létrehozott név, amely a következővel __DynamicModule_ kezdődik, és amelyet egy GUID követ, amely meghatározza a dinamikus modul elérési útját.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ReturnResult

Azt jelzi, hogy ez a parancsmag futtatja a szkriptblokkot, és a modulobjektumok visszaadása helyett a szkriptblokk eredményeit adja vissza.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Meghatározza a dinamikus modul tartalmát. A szkriptblokk létrehozásához csatolja a tartalmat a kapcsos zárójelekbe ({}). Ez a paraméter kötelező.

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

String

Ehhez a parancsmaghoz csövezheti a modul nevét.

Kimenetek

PSModuleInfo

Ez a parancsmag alapértelmezés szerint létrehoz egy PSModuleInfo objektumot.

PSCustomObject

Ha az AsCustomObject paramétert használja, az létrehoz egy PSCustomObject objektumot.

Object

Ha a ReturnResult paramétert használja, ez a parancsmag a dinamikus modul szkriptblokkjának kiértékelésének eredményét adja vissza.

Jegyzetek

A PowerShell a következő aliasokat New-Moduletartalmazza:

  • Minden platform:
    • nmo