Udostępnij za pomocą


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