New-Module
Vytvoří nový dynamický modul, který existuje pouze v paměti.
Syntax
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. K přepsání výchozích hodnot ale můžete použít rutinu Export-ModuleMember a parametry New- Module.
K vrácení dynamického modulu jako vlastního objektu můžete také použít parametr
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, nastavte 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ží ho na disk ani neuloží.
Příklady
Příklad 1: Vytvoření dynamického modulu
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 : {}
Tento příkaz vytvoří nový dynamický modul s funkcí s názvem Hello. Příkaz vrátí objekt modulu, který představuje nový dynamický modul.
Příklad 2: Práce s dynamickými moduly a Get-Module a 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!"
Tento příklad ukazuje, že rutina Get-Module nevrácejí dynamické moduly. Členové, které exportují, vrátí rutina Get-Command.
Příklad 3: Export proměnné do aktuální relace
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
Tento příkaz používá rutinu Export-ModuleMember k exportu proměnné do aktuální relace. Bez příkazu Export-ModuleMember se exportuje pouze funkce.
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
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!"
Tento příkaz ukazuje, že můžete zpřístupnit dynamický modul pro Get-Module propojením dynamického modulu do import-module.
První příkaz používá operátor kanálu (|) k odeslání objektu modulu, který New-Module vygeneruje do rutiny Import-Module. Příkaz používá parametr NameNew-Module k přiřazení popisného názvu modulu. Vzhledem k tomu, Import-Module nevrací žádné objekty ve výchozím nastavení, neexistuje žádný výstup z tohoto příkazu.
Druhý příkaz používá Get-Module k získání modulů v relaci. Výsledek ukazuje, že Get-Module může získat nový dynamický modul.
Třetí příkaz používá rutinu Get-Command k získání funkce Hello, kterou dynamický modul exportuje.
Příklad 5: Vygenerování vlastního objektu, který má exportované funkce
$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
Tento příklad ukazuje, jak pomocí parametru AsCustomObjectNew-Module vygenerovat vlastní objekt, který má metody skriptu, které představují exportované funkce.
První příkaz používá rutinu New-Module k vygenerování dynamického modulu se dvěma funkcemi Hello a Goodbye. Příkaz používá parametr AsCustomObject k vygenerování vlastního objektu místo objektu PSModuleInfo, který New-Module generuje ve výchozím nastavení. Příkaz uloží vlastní objekt do proměnné $m.
Druhý příkaz se pokusí zobrazit hodnotu proměnné $m. Nezobrazí se žádný obsah.
Třetí příkaz pomocí operátoru kanálu odešle vlastní objekt do rutiny Get-Member, která zobrazuje vlastnosti a metody vlastního objektu. Výstup ukazuje, že objekt má metody skriptu, které představují funkce Hello a Goodbye.
Čtvrté a páté příkazy používají formát metody skriptu k volání funkcí Hello a Goodbye.
Příklad 6: Získání výsledků bloku skriptu
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Tento příkaz 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 zavolá funkci.
Parametry
-ArgumentList
Určuje pole argumentů, které jsou hodnoty parametrů předané do bloku skriptu.
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
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
Tato rutina ve výchozím nastavení generuje objekt PSModuleInfo. Pokud použijete parametr AsCustomObject, vygeneruje objekt PSCustomObject. Pokud použijete parametr ReturnResult, vrátí výsledek vyhodnocení bloku skriptu v dynamickém modulu.
Poznámky
- Můžete také odkazovat na
New-Modulepodle jeho aliasu,nmo. Další informace viz about_Aliases.