Megosztás a következőn keresztül:


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 alapértelmezett értékek felülbírálásához azonban használhatja a Export-ModuleMember parancsmagot és a New-Module paramétereit.

A New-Module paraméterével is visszaadhatja a dinamikus modult egyéni objektumként. 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. Get-Module nem lehet dinamikus modult lekérni, de Get-Command lekérheti az exportált tagokat.

Ha elérhetővé szeretne tenni egy dinamikus modult a(z) Get-Moduleszámára, vezessen le egy New-Module parancsot az Import-Module parancson keresztül, vagy csövezze át a(z) New-Module által visszatérő modulobjektumot a(z) Import-Moduleszámára. 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 Hellonevű függvénnyel. 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, Get-Module és Get-Command használata

Ez a példa azt mutatja be, hogy a dinamikus modulokat nem a Get-Module parancsmag adja vissza. 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. A Export-ModuleMember 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 Get-Module

Ez a példa bemutatja, hogy a dinamikus modult elérhetővé teheti Get-Module számára úgy, hogy Import-Module-hez továbbítja.

New-Module létrehoz egy modulobjektumot, amely a Import-Module parancsmaghoz van csövezve. A New-Module paramétere egy barátságos 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 a dinamikus modul által exportált Hello függvényt jeleníti meg.

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

Ez a példa bemutatja, hogyan használható a New-Module paramétere az exportált függvényeket képviselő szkriptmetódusokkal rendelkező egyéni objektum létrehozásához.

A New-Module parancsmag egy dinamikus modult hoz létre két funkcióval, Hello és Goodbye. Az AsCustomObject paraméter létrehoz egy egyéni objektumot a PSModuleInfo objektum helyett, amelyet alapértelmezés szerint New-Module generál. Ez az egyéni objektum a $m változóba lesz mentve. Úgy tűnik, hogy a $m változóhoz nincs hozzárendelt érték.

$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 $m parancsmaghoz való piping Get-Member az egyéni objektum tulajdonságait és metódusait jeleníti meg. A kimenet azt mutatja, hogy az objektum szkriptmetódusokkal rendelkezik, amelyek a Hello és Goodbye függvényeket jelölik. Végül meghívjuk ezeket a szkriptfüggvényeket, é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ényeit modulobjektum kérése helyett. Az új modul szkriptblokkja határozza meg a SayHello függvényt, 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 ArgumentListviselkedésével kapcsolatos további információkért lásd: about_Splatting.

Típus:Object[]
Aliasok:Args
Position:Named
Alapértelmezett érték:None
Kötelező:False
Folyamatbemenet elfogadása:False
Helyettesítő karakterek elfogadása: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.

Típus:SwitchParameter
Position:Named
Alapértelmezett érték:None
Kötelező:False
Folyamatbemenet elfogadása:False
Helyettesítő karakterek elfogadása: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.

Típus:String[]
Position:Named
Alapértelmezett érték:None
Kötelező:False
Folyamatbemenet elfogadása:False
Helyettesítő karakterek elfogadása: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.

Típus:String[]
Position:Named
Alapértelmezett érték:None
Kötelező:False
Folyamatbemenet elfogadása:False
Helyettesítő karakterek elfogadása: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 __DynamicModule_ kezdődik, és egy GUID követi, amely meghatározza a dinamikus modul elérési útját.

Típus:String
Position:0
Alapértelmezett érték:None
Kötelező:True
Folyamatbemenet elfogadása:True
Helyettesítő karakterek elfogadása:False

-ReturnResult

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

Típus:SwitchParameter
Position:Named
Alapértelmezett érték:None
Kötelező:False
Folyamatbemenet elfogadása:False
Helyettesítő karakterek elfogadása: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ő.

Típus:ScriptBlock
Position:1
Alapértelmezett érték:None
Kötelező:True
Folyamatbemenet elfogadása:False
Helyettesítő karakterek elfogadása: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 tartalmazza New-Module:

  • Minden platform:
    • nmo