Udostępnij za pośrednictwem


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-Moduledynamiczny , należy przekazać New-Module polecenie do modułu Import-Module lub potokować obiekt modułu, który New-Module powraca do Import-Moduleelementu . 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-Moduleelement 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

String

Możesz przekazać 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 on obiekt PSCustomObject .

Object

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.