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. Polecenie Get-Module nie może pobrać modułu dynamicznego, ale polecenie Get-Command może pobrać wyeksportowane elementy członkowskie.
Aby udostępnić moduł Get-Module
dynamiczny , należy przekazać New-Module
polecenie 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 do listy, ale nie zapisuje modułu Get-Module
na dysku ani nie powoduje jego trwałego.
Przykłady
Przykład 1. Tworzenie modułu dynamicznego
W tym przykładzie zostanie utworzony nowy moduł dynamiczny z funkcją o nazwie Hello
. Polecenie zwraca obiekt modułu reprezentujący 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 poleceniem 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ą zwracane 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 użyto Export-ModuleMember
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 dla modułu Get-Module
W tym przykładzie pokazano, że można udostępnić moduł Get-Module
dynamiczny przez potokowanie modułu dynamicznego do elementu Import-Module
.
New-Module
Tworzy obiekt modułu, który jest potokiem do Import-Module
polecenia cmdlet. Parametr Name atrybutu New-Module
przypisuje przyjazną nazwę do modułu. Ponieważ Import-Module
nie zwraca żadnych obiektów domyślnie, nie ma żadnych danych wyjściowych z tego polecenia. Get-Module
element GreetingModule został zaimportowany 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 pokazuje Hello
funkcję eksportaną 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 dwoma 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 Hello
reprezentujące 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.
Typ: | Object[] |
Aliasy: | Args |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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ę __DynamicModule_
od i jest po nim identyfikator GUID, który określa ścieżkę modułu dynamicznego.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-ReturnResult
Wskazuje, że to polecenie cmdlet uruchamia blok skryptu i zwraca wyniki bloku skryptu zamiast zwracać obiekt modułu.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-ScriptBlock
Określa zawartość modułu dynamicznego. Dołącz zawartość w nawiasach klamrowych ({}
), aby utworzyć blok skryptu. Ten parametr jest wymagany.
Typ: | ScriptBlock |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Możesz przekazać nazwę modułu do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet domyślnie generuje obiekt PSModuleInfo .
Jeśli używasz parametru AsCustomObject , generuje on obiekt PSCustomObject .
Jeśli używasz parametru ReturnResult , to polecenie cmdlet zwraca wynik oceny bloku skryptu w module dynamicznym.
Uwagi
Program Windows PowerShell zawiera następujące aliasy dla programu New-Module
:
nmo
Możesz również odwołać się do New-Module
jego aliasu, nmo
. Aby uzyskać więcej informacji, zobacz about_Aliases.