New-Module
Tworzy nowy moduł dynamiczny, który istnieje tylko w pamięci.
Składnia
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>]
Opis
Polecenie New-Module
cmdlet tworzy moduł dynamiczny z bloku skryptu. Elementy członkowskie modułu dynamicznego, takie jak funkcje i zmienne, są natychmiast dostępne w sesji i pozostają dostępne do momentu zamknięcia sesji.
Podobnie jak moduły statyczne, domyślnie polecenia cmdlet i funkcje w module dynamicznym są eksportowane, a zmienne i aliasy nie. Można jednak użyć polecenia cmdlet Export-ModuleMember i parametrów polecenia New-Module
, aby zastąpić wartości domyślne.
Możesz również użyć parametru AsCustomObject , New-Module
aby zwrócić moduł dynamiczny jako obiekt niestandardowy. Elementy członkowskie modułów, takie jak funkcje, są implementowane jako metody skryptu obiektu niestandardowego, a nie importowane do sesji.
Moduły dynamiczne istnieją tylko w pamięci, a nie na dysku. Podobnie jak wszystkie moduły, elementy członkowskie modułów dynamicznych są uruchamiane w zakresie modułu prywatnego będącego elementem podrzędnym zakresu globalnego. Get-Module nie może uzyskać modułu dynamicznego, ale Get-Command może pobrać wyeksportowane elementy członkowskie.
Aby udostępnić moduł dynamiczny do Get-Module
elementu , należy przekazać polecenie New-Module
do modułu Import-Module lub potokować obiekt modułu, który New-Module
powraca do Import-Module
elementu . Ta akcja powoduje dodanie modułu dynamicznego Get-Module
do listy, ale nie zapisuje modułu na dysku ani nie czyni go trwałym.
Przykłady
Przykład 1: Twórca moduł dynamiczny
W tym przykładzie zostanie utworzony nowy moduł dynamiczny z funkcją o nazwie Hello
. Polecenie zwraca obiekt modułu, który reprezentuje nowy moduł dynamiczny.
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 : {}
Przykład 2. Praca z modułami dynamicznymi i Get-Module i Get-Command
W tym przykładzie pokazano, że moduły dynamiczne nie są zwracane przez Get-Module
polecenie cmdlet. Członkowie, których eksportują, są zwracani przez Get-Command
polecenie cmdlet.
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!"
Przykład 3. Eksportowanie zmiennej do bieżącej sesji
W tym przykładzie Export-ModuleMember
użyto polecenia cmdlet do wyeksportowania zmiennej do bieżącej sesji.
Export-ModuleMember
Bez polecenia eksportowana jest tylko funkcja.
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
Dane wyjściowe pokazują, że zarówno zmienna, jak i funkcja zostały wyeksportowane do sesji.
Przykład 4. Udostępnianie modułu dynamicznego do Get-Module
W tym przykładzie pokazano, że można udostępnić moduł Get-Module
dynamiczny przez potokowanie modułu dynamicznego do Import-Module
elementu .
New-Module
Tworzy obiekt modułu Import-Module
, który jest potokowany do polecenia cmdlet. Parametr Name atrybutu New-Module
przypisuje przyjazną nazwę do modułu. Ponieważ Import-Module
domyślnie nie zwraca żadnych obiektów, nie ma żadnych danych wyjściowych tego polecenia. Get-Module
zaimportowano element GreetingModule do bieżącej sesji.
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!"
Polecenie Get-Command
cmdlet wyświetla Hello
funkcję eksportowaną przez moduł dynamiczny.
Przykład 5. Generowanie obiektu niestandardowego z wyeksportowanymi funkcjami
W tym przykładzie pokazano, jak za pomocą parametru New-Module
AsCustomObject wygenerować obiekt niestandardowy, który zawiera metody skryptu reprezentujące wyeksportowane funkcje.
Polecenie New-Module
cmdlet tworzy moduł dynamiczny z dwiema funkcjami Hello
i Goodbye
. Parametr AsCustomObject tworzy obiekt niestandardowy zamiast obiektu PSModuleInfo , który New-Module
domyślnie generuje. Ten obiekt niestandardowy jest zapisywany w zmiennej $m
.
Zmienna $m
wydaje się nie mieć przypisanej wartości.
$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
Potokowanie $m
do Get-Member
polecenia cmdlet wyświetla właściwości i metody obiektu niestandardowego. Dane wyjściowe pokazują, że obiekt ma metody skryptu reprezentujące Hello
funkcje i Goodbye
.
Na koniec wywołujemy te metody skryptu i wyświetlamy wyniki.
Przykład 6. Pobieranie wyników bloku skryptu
W tym przykładzie użyto parametru ReturnResult , aby zażądać wyników uruchomienia bloku skryptu zamiast żądania obiektu modułu. Blok skryptu w nowym module definiuje SayHello
funkcję, a następnie wywołuje funkcję.
New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!
Parametry
-ArgumentList
Określa tablicę argumentów, które są wartościami parametrów przekazywanymi do bloku skryptu. Aby uzyskać więcej informacji na temat zachowania argumentlist, zobacz about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsCustomObject
Wskazuje, że to polecenie cmdlet zwraca obiekt niestandardowy reprezentujący moduł dynamiczny. Elementy członkowskie modułu są implementowane jako metody skryptu obiektu niestandardowego, ale nie są importowane do sesji. Obiekt niestandardowy można zapisać w zmiennej i użyć notacji kropkowej, aby wywołać elementy członkowskie.
Jeśli moduł ma wiele elementów członkowskich o tej samej nazwie, takich jak funkcja i zmienna o nazwie A, dostęp do każdego elementu członkowskiego o każdej nazwie można uzyskać dostęp z obiektu niestandardowego.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Cmdlet
Określa tablicę poleceń cmdlet, które to polecenie cmdlet eksportuje z modułu do bieżącej sesji. Wprowadź rozdzielaną przecinkami listę poleceń cmdlet. Dozwolone są symbole wieloznaczne. Domyślnie wszystkie polecenia cmdlet w module są eksportowane.
Nie można zdefiniować poleceń cmdlet w bloku skryptu, ale moduł dynamiczny może zawierać polecenia cmdlet, jeśli importuje polecenia cmdlet z modułu binarnego.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Function
Określa tablicę funkcji, które to polecenie cmdlet eksportuje z modułu do bieżącej sesji. Wprowadź rozdzielaną przecinkami listę funkcji. Dozwolone są symbole wieloznaczne. Domyślnie wszystkie funkcje zdefiniowane w module są eksportowane.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Name
Określa nazwę nowego modułu. Możesz również przekazać nazwę modułu do polecenia New-Module.
Wartość domyślna to automatycznie wygenerowana nazwa, która zaczyna się od __DynamicModule_
i następuje po identyfikatorze GUID określającym ścieżkę modułu dynamicznego.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ReturnResult
Wskazuje, że to polecenie cmdlet uruchamia blok skryptu i zwraca wyniki bloku skryptu zamiast zwracać obiekt modułu.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Określa zawartość modułu dynamicznego. Dołącz zawartość w nawiasach klamrowych ({}
), aby utworzyć blok skryptu. Ten parametr jest wymagany.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Dane wejściowe
Możesz przekazać do tego polecenia cmdlet nazwę modułu.
Dane wyjściowe
System.Management.Automation.PSModuleInfo, System.Management.Automation.PSCustomObject, or None
To polecenie cmdlet domyślnie generuje obiekt PSModuleInfo . Jeśli używasz parametru AsCustomObject , generuje on obiekt PSCustomObject . Jeśli używasz parametru ReturnResult , zwraca wynik oceny bloku skryptu w module dynamicznym.
Uwagi
Możesz również odwołać się do New-Module
aliasu , nmo
. Aby uzyskać więcej informacji, zobacz about_Aliases.