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. 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-Moduleelementu , należy przekazać polecenie New-Module 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 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-Moduleelementu .

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-ModuleAsCustomObject 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

String

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.