New-Module
Vytvoří nový dynamický modul, který existuje pouze v paměti.
Syntaxe
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
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 exportují a proměnné a aliasy nejsou. K přepsání výchozích New-Module
hodnot ale můžete použít rutinu Export-ModuleMember a parametry.
K vrácení dynamického New-Module
modulu jako vlastního objektu můžete použít také parametr AsCustomObject. Členové modulů, jako jsou například funkce, se implementují jako metody skriptů vlastního objektu místo importu 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 oboru privátního modulu, který je podřízeným globálním rozsahem. Get-Module nemůže získat dynamický modul, ale Get-Command může získat exportované členy.
Chcete-li zpřístupnit dynamický modul Get-Module
, nasadíte New-Module
příkaz do modulu Import-Module, nebo kanál objektu modulu, který New-Module
se vrátí do Import-Module
. Tato akce přidá dynamický modul do Get-Module
seznamu, 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 rutinami Get-Module a Get-Command
Tento příklad ukazuje, že rutina Get-Module
nevrácejí dynamické moduly. Členové, které exportují, vrátí rutina 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!"
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.
Export-ModuleMember
Bez příkazu 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 relace.
Příklad 4: Zpřístupnění dynamického modulu pro Get-Module
Tento příklad ukazuje, že můžete zpřístupnit dynamický modul Get-Module
propojením dynamického modulu do Import-Module
.
New-Module
vytvoří objekt modulu, který se předá rutině Import-Module
. Parametr Name přiřadí New-Module
modulu popisný název. Vzhledem k tomu Import-Module
, že ve výchozím nastavení nevrací žádné objekty, neexistuje žádný výstup z 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 Hello
funkci, 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
generovat vlastní objekt, který má metody skriptu, které představují exportované funkce.
Rutina New-Module
vytvoří dynamický modul se dvěma funkcemi Hello
a Goodbye
. AsCustomObject parametr vytvoří vlastní objekt místo PSModuleInfo objekt, který New-Module
generuje ve výchozím nastavení. Tento vlastní objekt je uložen v $m
proměnné.
Zdá $m
se, že proměnná 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
to the Get-Member
rutin zobrazí vlastnosti a metody vlastního objektu. Výstup ukazuje, že objekt má metody skriptu, které představují Hello
a Goodbye
funkce.
Nakonec tyto metody skriptu zavoláme a zobrazíme výsledky.
Příklad 6: Získání výsledků bloku skriptu
Tento příklad používá returnResult parametr 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 SayHello
funkci 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í ArgumentList naleznete v tématu about_Splatting.
Typ: | Object[] |
Aliasy: | Args |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-AsCustomObject
Označuje, že tato rutina vrací vlastní objekt, který představuje dynamický modul. Členy modulu se implementují jako metody skriptů vlastního objektu, ale neimportují se do relace. 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Cmdlet
Určuje pole rutin, které tato rutina 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.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Function
Určuje pole funkcí, které tato rutina 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.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-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ý __DynamicModule_
začíná a následuje identifikátor GUID, který určuje cestu dynamického modulu.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-ReturnResult
Označuje, že tato rutina spustí blok skriptu a místo vrácení objektu modulu vrátí výsledky bloku skriptu.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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ý.
Typ: | ScriptBlock |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Do této rutiny můžete připojit název modulu.
Výstupy
Tato rutina ve výchozím nastavení generuje objekt PSModuleInfo .
Pokud použijete asCustomObject parametr, vygeneruje PSCustomObject objekt.
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