New-Module
Tworzy nowy moduł dynamiczny, który istnieje tylko w pamięci.
Składnia
ScriptBlock (Domyślna)
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>]
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 AsCustomObject w 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 modułów dynamicznych działają w prywatnym zakresie modułu, który jest podrzędny względem zakresu globalnego. Get-Module nie może uzyskać modułu dynamicznego, ale Get-Command może uzyskać wyeksportowanych członków.
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 zwraca do Import-Module. Ta akcja dodaje moduł dynamiczny do listy Get-Module, ale nie zapisuje modułu na dysku ani nie powoduje jego utrwalenia.
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 eksportowani przez polecenie cmdlet Get-Command są zwracani.
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ępnij moduł dynamiczny dla Get-Module
W tym przykładzie pokazano, że można udostępnić moduł dynamiczny Get-Module poprzez przesłanie modułu dynamicznego do Import-Module.
New-Module tworzy obiekt modułu, który jest przekazywany 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
Przekazywanie $m do 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 działania ArgumentList, zobacz about_Splatting.
Właściwości parametru
| Typ: | Object[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Argumenty |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-AsCustomObject
Wskazuje, że to polecenie cmdlet zwraca obiekt niestandardowy reprezentujący moduł dynamiczny. Członkowie modułu są implementowani jako metody skryptu obiektu niestandardowego, ale nie są importowani do sesji. Obiekt niestandardowy można zapisać w zmiennej i użyć notacji kropkowej, aby wywołać elementy.
Jeśli moduł ma wiele elementów członkowskich o tej samej nazwie, takich jak funkcja i zmienna o nazwie A, z obiektu niestandardowego można uzyskać dostęp tylko do jednego elementu członkowskiego o każdej nazwie.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Cmdlet
Określa zbiór poleceń cmdlet, które ten cmdlet eksportuje z modułu do bieżącej sesji. Wprowadź listę poleceń cmdlet rozdzielaną przecinkami. Symbole wieloznaczne są dozwolone. 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.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Function
Określa tablicę funkcji, które polecenie cmdlet eksportuje z modułu do bieżącej sesji. Wprowadź rozdzielaną przecinkami listę funkcji. Symbole wieloznaczne są dozwolone. Domyślnie wszystkie funkcje zdefiniowane w module są eksportowane.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Name
Określa nazwę nowego modułu. Możesz również przekierować 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.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
Name
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ReturnResult
Wskazuje, że to polecenie cmdlet uruchamia blok skryptu i zwraca wyniki bloku skryptu zamiast zwracać obiekt modułu.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ScriptBlock
Określa zawartość modułu dynamicznego. Dołącz zawartość w nawiasach klamrowych ({}), aby utworzyć blok skryptu. Ten parametr jest wymagany.
Właściwości parametru
| Typ: | ScriptBlock |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
String
Możesz przekierować nazwę modułu do tego polecenia cmdlet.
Dane wyjściowe
PSModuleInfo
To polecenie cmdlet domyślnie generuje obiekt PSModuleInfo.
PSCustomObject
Jeśli używasz parametru AsCustomObject, generuje obiekt PSCustomObject.
Object
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