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 cmdlet New-Module
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 New-Module
, aby zastąpić wartości domyślne.
Możesz również użyć parametru AsCustomObjectNew-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żna pobrać modułu dynamicznego, ale Get-Command może pobrać wyeksportowane elementy członkowskie.
Aby udostępnić moduł dynamiczny Get-Module
, należy przekazać polecenie New-Module
do modułu Import-Module lub potokować obiekt modułu, który New-Module
powrócić do Import-Module
. Ta akcja dodaje moduł dynamiczny do listy Get-Module
, ale nie zapisuje modułu 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 Get-Module i Get-Command
W tym przykładzie pokazano, że moduły dynamiczne nie są zwracane przez polecenie cmdlet Get-Module
. Członkowie, których eksportują, są zwracane przez polecenie cmdlet 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!"
Przykład 3. Eksportowanie zmiennej do bieżącej sesji
W tym przykładzie użyto polecenia cmdlet Export-ModuleMember
do wyeksportowania zmiennej do bieżącej sesji.
Bez polecenia Export-ModuleMember
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 Get-Module
W tym przykładzie pokazano, że można udostępnić moduł dynamiczny Get-Module
przez potokowanie modułu dynamicznego w celu Import-Module
.
New-Module
tworzy obiekt modułu, który jest potokiem do polecenia cmdlet Import-Module
. Parametr NameNew-Module
przypisuje przyjazną nazwę do modułu. Ponieważ Import-Module
domyślnie nie zwraca żadnych obiektów, nie ma danych wyjściowych tego polecenia.
Get-Module
, że 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 cmdlet Get-Command
pokazuje funkcję Hello
eksportowaną przez moduł dynamiczny.
Przykład 5. Generowanie obiektu niestandardowego z wyeksportowanymi funkcjami
W tym przykładzie pokazano, jak użyć parametru AsCustomObjectNew-Module
w celu wygenerowania obiektu niestandardowego, który zawiera metody skryptu reprezentujące wyeksportowane funkcje.
Polecenie cmdlet New-Module
tworzy moduł dynamiczny z dwoma funkcjami, Hello
i Goodbye
. Parametr AsCustomObject tworzy obiekt niestandardowy zamiast obiektu PSModuleInfo, który New-Module
generuje domyślnie. 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 polecenia cmdlet Get-Member
wyświetla właściwości i metody obiektu niestandardowego. Dane wyjściowe pokazują, że obiekt ma metody skryptu reprezentujące funkcje Hello
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 funkcję SayHello
, 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 rozpoczynająca się od __DynamicModule_
, a następnie identyfikator GUID określający ś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 obiekt PSCustomObject.
Jeśli używasz parametru ReturnResult, to polecenie cmdlet zwraca wynik oceny bloku skryptu w module dynamicznym.
Uwagi
Program PowerShell zawiera następujące aliasy dla New-Module
:
- Wszystkie platformy:
nmo