Sdílet prostřednictvím


New-Module

Vytvoří nový dynamický modul, který existuje pouze v paměti.

Syntaxe

ScriptBlock (Výchozí)

New-Module
    [-ScriptBlock] <ScriptBlock>
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-ReturnResult]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

Name

New-Module
    [-Name] <String>
    [-ScriptBlock] <ScriptBlock>
    [-Function <String[]>]
    [-Cmdlet <String[]>]
    [-ReturnResult]
    [-AsCustomObject]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

Description

Rutina New-Module vytvoří dynamický modul z bloku skriptu. Členové dynamického modulu, jako jsou funkce a proměnné, jsou okamžitě k dispozici v relaci a zůstanou k dispozici, dokud relaci nezavřete.

Podobně jako statické moduly se rutiny a funkce v dynamickém modulu ve výchozím nastavení exportují, ale proměnné a aliasy nikoli. Ale můžete použít rutinu Export-ModuleMember a parametry New-Module k přepsání výchozích hodnot.

K vrácení dynamického modulu jako vlastního objektu můžete použít také parametr AsCustomObjectNew-Module. Členové modulů, jako jsou funkce, se implementují jako skriptové metody vlastního objektu, místo aby byly importovány do relace.

Dynamické moduly existují pouze v paměti, ne na disku. Stejně jako všechny moduly se členové dynamických modulů spouštějí v soukromém rozsahu modulu, který je dceřiným globálním rozsahu. Get-Module nemůže získat dynamický modul, ale Get-Command může získat exportované členy.

Chcete-li zpřístupnit dynamický modul pro Get-Module, předejte příkaz New-Module do modulu Import-Module, nebo předejte objekt modulu, který New-Module vrátí do Import-Module. Tato akce přidá dynamický modul do seznamu Get-Module, ale neuloží modul na disk nebo ho nastaví jako trvalý.

Příklady

Příklad 1: Vytvoření dynamického modulu

Tento příklad vytvoří nový dynamický modul s funkcí s názvem Hello. Příkaz vrátí objekt modulu, který představuje nový dynamický 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     : {}

Příklad 2: Práce s dynamickými moduly a Get-Module a Get-Command

Tento příklad ukazuje, že rutina Get-Module nevrácejí dynamické moduly. Členy, které exportuje cmdlet Get-Command, vrací.

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

Příklad 3: Export proměnné do aktuální relace

Tento příklad používá rutinu Export-ModuleMember k exportu proměnné do aktuální relace. Bez příkazu Export-ModuleMember se exportuje jenom funkce.

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

Výstup ukazuje, že proměnná i funkce byly exportovány do uživatelské relace.

Příklad 4: Zpřístupnění dynamického modulu pro Get-Module

Tento příklad ukazuje, že můžete zpřístupnit dynamický modul pro Get-Module propojením dynamického modulu do Import-Module.

New-Module vytvoří objekt modulu, který se předá do rutiny Import-Module. Parametr Name přiřadí přátelský název modulu New-Module. Vzhledem k tomu, že Import-Module ve výchozím nastavení nevrací žádné objekty, neexistuje žádný výstup tohoto příkazu. Get-Module, že GreetingModule byl importován do aktuální relace.

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

Rutina Get-Command zobrazuje funkci Hello, kterou dynamický modul exportuje.

Příklad 5: Vygenerování vlastního objektu, který má exportované funkce

Tento příklad ukazuje, jak použít AsCustomObject parametr New-Module k vygenerování vlastního objektu, který má metody skriptu, které představují exportované funkce.

Rutina New-Module vytvoří dynamický modul se dvěma funkcemi, Hello a Goodbye. Parametr AsCustomObject vytvoří vlastní objekt místo objektu PSModuleInfo, který New-Module ve výchozím nastavení generuje. Tento vlastní objekt je uložen v proměnné $m. Zdá se, že proměnná $m nemá přiřazenou hodnotu.

$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

Piping $m do cmdletu Get-Member zobrazí vlastnosti a metody vlastního objektu. Výstup ukazuje, že objekt má metody skriptu, které představují Hello a Goodbye funkce. Nakonec zavoláme metody tohoto skriptu a zobrazíme výsledky.

Příklad 6: Získání výsledků bloku skriptu

Tento příklad používá parametr ReturnResult k vyžádání výsledků spuštění bloku skriptu místo vyžádání objektu modulu. Blok skriptu v novém modulu definuje funkci SayHello a pak funkci zavolá.

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

Parametry

-ArgumentList

Určuje pole argumentů, které jsou hodnoty parametrů předané do bloku skriptu. Další informace o chování ArgumentListnajdete v části about_Splatting.

Vlastnosti parametru

Typ:

Object[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False
Aliasy:Argumenty

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-AsCustomObject

Označuje, že tato rutina vrací vlastní objekt, který představuje dynamický modul. Členové modulu jsou implementováni jako skriptové metody vlastního objektu, ale do relace nejsou importováni. Vlastní objekt můžete uložit do proměnné a pomocí tečkovaného zápisu vyvolat členy.

Pokud má modul více členů se stejným názvem, jako je funkce a proměnná s názvem A, je možné z vlastního objektu získat přístup pouze k jednomu členu s každým názvem.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Cmdlet

Určuje pole cmdletů, které tento cmdlet exportuje z modulu do aktuální relace. Zadejte čárkami oddělený seznam rutin. Jsou povoleny zástupné znaky. Ve výchozím nastavení se exportují všechny rutiny v modulu.

Rutiny nelze definovat v bloku skriptu, ale dynamický modul může zahrnovat rutiny, pokud importuje rutiny z binárního modulu.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Function

Určuje pole funkcí, které tento příkazový nástroj exportuje z modulu do aktuální relace. Zadejte čárkami oddělený seznam funkcí. Jsou povoleny zástupné znaky. Ve výchozím nastavení se exportují všechny funkce definované v modulu.

Vlastnosti parametru

Typ:

String[]

Default value:None
Podporuje zástupné znaky:True
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-Name

Určuje název nového modulu. Název modulu můžete také převést na New-Module.

Výchozí hodnota je automaticky vygenerovaný název, který začíná __DynamicModule_ a následuje identifikátor GUID, který určuje cestu dynamického modulu.

Vlastnosti parametru

Typ:String
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

Name
Position:0
Povinné:True
Hodnota z kanálu:True
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-ReturnResult

Označuje, že tato rutina spustí blok skriptu a místo vrácení objektu modulu vrátí výsledky bloku skriptu.

Vlastnosti parametru

Typ:SwitchParameter
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:Named
Povinné:False
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

-ScriptBlock

Určuje obsah dynamického modulu. Uzavřete obsah do složených závorek ({}) a vytvořte blok skriptu. Tento parametr je povinný.

Vlastnosti parametru

Typ:ScriptBlock
Default value:None
Podporuje zástupné znaky:False
DontShow:False

Sady parametrů

(All)
Position:1
Povinné:True
Hodnota z kanálu:False
Hodnota z kanálu podle názvu vlastnosti:False
Hodnota ze zbývajících argumentů:False

CommonParameters

Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.

Vstupy

String

Do tohoto cmdletu můžete připojit název modulu.

Výstupy

PSModuleInfo

Tato rutina ve výchozím nastavení generuje objekt PSModuleInfo.

PSCustomObject

Pokud použijete parametr AsCustomObject, vygeneruje objekt PSCustomObject.

Object

Pokud použijete parametr ReturnResult, vrátí tato rutina výsledek vyhodnocení bloku skriptu v dynamickém modulu.

Poznámky

PowerShell obsahuje následující aliasy pro New-Module:

  • Všechny platformy:
    • nmo