Udostępnij przez


New-Module

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

Składnia

ScriptBlock (Domyślne)

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 New-Module cmdlet tworzy moduł dynamiczny na podstawie bloku skryptów. 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 blokady skryptu

W tym przykładzie użyto parametru ReturnResult , aby zażądać wyników uruchomienia skryptblocku 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 działania ArgumentList, zobacz about_Splatting.

Właściwości parametrów

Typ:

Object[]

Wartość domyślna:None
Wspiera dzikie karty:False
DontShow:False
Aliasy:Argumenty

Zbiory parametrów

(All)
Pozycja:Named
Obowiązkowy:False
Wartość z pipeline:False
Wartość z pipeline według nazwy właściwości:False
Wartość 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 parametrów

Typ:SwitchParameter
Wartość domyślna:None
Wspiera dzikie karty:False
DontShow:False

Zbiory parametrów

(All)
Pozycja:Named
Obowiązkowy:False
Wartość z pipeline:False
Wartość z pipeline według nazwy właściwości:False
Wartość 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 skryptów, ale moduł dynamiczny może zawierać polecenia cmdlet, jeśli importuje polecenia cmdlet z modułu binarnego.

Właściwości parametrów

Typ:

String[]

Wartość domyślna:None
Wspiera dzikie karty:False
DontShow:False

Zbiory parametrów

(All)
Pozycja:Named
Obowiązkowy:False
Wartość z pipeline:False
Wartość z pipeline według nazwy właściwości:False
Wartość 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 parametrów

Typ:

String[]

Wartość domyślna:None
Wspiera dzikie karty:True
DontShow:False

Zbiory parametrów

(All)
Pozycja:Named
Obowiązkowy:False
Wartość z pipeline:False
Wartość z pipeline według nazwy właściwości:False
Wartość 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 parametrów

Typ:String
Wartość domyślna:None
Wspiera dzikie karty:False
DontShow:False

Zbiory parametrów

Name
Pozycja:0
Obowiązkowy:True
Wartość z pipeline:True
Wartość z pipeline według nazwy właściwości:False
Wartość pozostałych argumentów:False

-ReturnResult

Wskazuje, że to polecenie cmdlet uruchamia blok skryptów i zwraca wyniki scriptblock zamiast zwracać obiekt modułu.

Właściwości parametrów

Typ:SwitchParameter
Wartość domyślna:None
Wspiera dzikie karty:False
DontShow:False

Zbiory parametrów

(All)
Pozycja:Named
Obowiązkowy:False
Wartość z pipeline:False
Wartość z pipeline według nazwy właściwości:False
Wartość 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 parametrów

Typ:ScriptBlock
Wartość domyślna:None
Wspiera dzikie karty:False
DontShow:False

Zbiory parametrów

(All)
Pozycja:1
Obowiązkowy:True
Wartość z pipeline:False
Wartość z pipeline według nazwy właściwości:False
Wartość 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.

Wejścia

String

Możesz przekierować nazwę modułu do tego polecenia cmdlet.

Wyjść

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 skryptblock w module dynamicznym.

Notatki

Program PowerShell zawiera następujące aliasy dla New-Module:

  • Wszystkie platformy:
    • nmo