Udostępnij za pomocą


New-Module

Tworzy nowy moduł dynamiczny, który istnieje tylko w pamięci.

Składnia

ScriptBlock (domyślnie)

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 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 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 powróci do Import-Module. Ta akcja powoduje dodanie modułu dynamicznego do listy get-module , ale nie zapisuje modułu na dysku ani nie czyni go trwałym.

Przykłady

Przykład 1. Tworzenie modułu dynamicznego

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     : {}

To polecenie tworzy nowy moduł dynamiczny z funkcją o nazwie Hello. Polecenie zwraca obiekt modułu reprezentujący nowy moduł dynamiczny.

Przykład 2. Praca z modułami dynamicznymi i Get-Module i 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!"

W tym przykładzie pokazano, że moduły dynamiczne nie są zwracane przez polecenie cmdlet Get-Module. Członkowie, których eksportują, są zwracani przez polecenie cmdlet get-command .

Przykład 3. Eksportowanie zmiennej do bieżącej sesji

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

To polecenie używa polecenia cmdlet Export-ModuleMember, aby wyeksportować zmienną do bieżącej sesji. Bez polecenia Export-ModuleMember eksportowana jest tylko funkcja.

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

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!"

To polecenie pokazuje, że można udostępnić moduł dynamiczny Get-Module przez potokowanie modułu dynamicznego w celu import-module.

Pierwsze polecenie używa operatora potoku (|) do wysyłania obiektu modułu, który New-Module generuje do polecenia cmdlet Import-Module. Polecenie używa parametru NameNew-Module w celu przypisania przyjaznej nazwy do modułu. Ponieważ import-module nie zwraca żadnych obiektów domyślnie, nie ma danych wyjściowych tego polecenia.

Drugie polecenie używa get-module, aby pobrać moduły w sesji. Wynik pokazuje, że get-module może pobrać nowy moduł dynamiczny.

Trzecie polecenie używa polecenia cmdlet Get-Command, aby uzyskać funkcję Hello eksportowaną przez moduł dynamiczny.

Przykład 5. Generowanie obiektu niestandardowego z wyeksportowanymi funkcjami

$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

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.

Pierwsze polecenie używa polecenia cmdlet New-Module w celu wygenerowania modułu dynamicznego z dwoma funkcjami Hello i Goodbye. Polecenie używa parametru AsCustomObject do generowania obiektu niestandardowego zamiast obiektu PSModuleInfo, który New-Module generuje domyślnie. Polecenie zapisuje obiekt niestandardowy w zmiennej $m.

Drugie polecenie próbuje wyświetlić wartość zmiennej $m. Nie jest wyświetlana żadna zawartość.

Trzecie polecenie używa operatora potoku do wysyłania obiektu niestandardowego do polecenia cmdlet Get-Member, które 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.

Czwarte i piąte polecenia używają formatu metody skryptu do wywoływania funkcji Hello i Goodbye.

Przykład 6. Pobieranie wyników bloku skryptu

New-Module -ScriptBlock {function SayHello {"Hello, World!"}; SayHello} -ReturnResult
Hello, World!

To polecenie używa 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ę.

Parametry

-ArgumentList

Określa tablicę argumentów, które są wartościami parametrów przekazywanymi do bloku skryptu.

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ązkowe: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ązkowe: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ązkowe: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ązkowe: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ązkowe: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ązkowe: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ązkowe: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

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 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 za pomocą aliasu nmo. Aby uzyskać więcej informacji, zobacz about_Aliases.