Jak napisać manifest modułu programu PowerShell
Po napiseniu modułu programu PowerShell możesz dodać opcjonalny manifest modułu, który zawiera informacje o module. Możesz na przykład opisać autora, określić pliki w module (na przykład moduły zagnieżdżone), uruchomić skrypty w celu dostosowania środowiska użytkownika, załadować typ i pliki formatowania, zdefiniować wymagania systemowe i ograniczyć elementy członkowskie eksportowane przez moduł.
Tworzenie manifestu modułu
Manifest modułu to plik danych programu PowerShell ( ), który opisuje zawartość modułu i określa sposób .psd1
przetwarzania modułu. Plik manifestu to plik tekstowy zawierający tabelę skrótów zawierającą klucze i wartości. Aby połączyć plik manifestu z modułem, należy nazwać manifest tak samo jak moduł i przechowywać manifest w katalogu głównym modułu.
W przypadku prostych modułów, które zawierają tylko jeden zestaw .psm1
lub zestaw binarny, manifest modułu jest opcjonalny. Jednak zaleca się używanie manifestu modułu zawsze, gdy jest to możliwe, ponieważ są one przydatne do organizowania kodu i obsługi informacji o wersjach. Ponadto manifest modułu jest wymagany do wyeksportowania zestawu zainstalowanego w globalnej pamięci podręcznej zestawów. Manifest modułu jest również wymagany w przypadku modułów, które obsługują funkcję Pomoc, która może być dostępna do działania. Aktualizowana pomoc używa klucza HelpInfoUri w manifeście modułu, aby znaleźć plik informacji pomocy (HelpInfo XML), który zawiera lokalizację zaktualizowanych plików pomocy dla modułu. Aby uzyskać więcej informacji na temat pomocy, która może być dowaalna, zobacz Supporting Updatable Help (Pomoc techniczna dla dziegieć).
Aby utworzyć manifest modułu i używać go
Najlepszym rozwiązaniem podczas tworzenia manifestu modułu jest użycie polecenia cmdlet New-ModuleManifest. Za pomocą parametrów można określić co najmniej jeden domyślny klucz i wartość manifestu. Jedynym wymaganiem jest nazwanie pliku.
New-ModuleManifest
Tworzy manifest modułu z określonymi wartościami i zawiera pozostałe klucze oraz ich wartości domyślne. Jeśli musisz utworzyć wiele modułów, użyj funkcji , aby utworzyć szablon manifestu modułu, któryNew-ModuleManifest
można zmodyfikować dla różnych modułów. Przykład domyślnego manifestu modułu można znaleźć w manifeście przykładowego modułu.New-ModuleManifest -Path C:\myModuleName.psd1 -ModuleVersion "2.0" -Author "YourNameHere"
Alternatywą jest ręczne utworzenie tabeli skrótów manifestu modułu przy użyciu minimalnych wymaganych informacji, moduleVersion. Zapisz plik o takiej samej nazwie jak moduł i użyj
.psd1
rozszerzenia pliku. Następnie możesz edytować plik i dodać odpowiednie klucze i wartości.Dodaj dodatkowe elementy, które mają być w pliku manifestu.
Aby edytować plik manifestu, użyj dowolnego edytora tekstów. Jednak plik manifestu jest plikiem skryptu zawierającym kod, więc możesz edytować go w środowisku skryptowym lub programisty takim jak Visual Studio Code. Wszystkie elementy pliku manifestu są opcjonalne, z wyjątkiem numeru ModuleVersion.
Opisy kluczy i wartości, które można uwzględnić w manifeście modułu, można znaleźć w tabeli Elementy manifestu modułu. Aby uzyskać więcej informacji, zobacz opisy parametrów w poleceniach cmdlet New-ModuleManifest.
Aby rozwiązać wszelkie scenariusze, które mogą nie być objęte elementami manifestu modułu podstawowego, możesz dodać dodatkowy kod do manifestu modułu.
Ze względów bezpieczeństwa program PowerShell uruchamia tylko niewielki podzbiór dostępnych operacji w pliku manifestu modułu. Ogólnie rzecz biorąc, można użyć
if
instrukcji , operatorów arytmetycznych i porównania oraz podstawowych typów danych programu PowerShell.Po utworzeniu manifestu modułu możesz go przetestować, aby potwierdzić, że wszystkie ścieżki opisane w manifeście są poprawne. Aby przetestować manifest modułu, użyj pliku Test-ModuleManifest.
Test-ModuleManifest myModuleName.psd1
Upewnij się, że manifest modułu znajduje się na najwyższym poziomie katalogu, który zawiera moduł.
Podczas kopiowania modułu do systemu i importowania go program PowerShell używa manifestu modułu do zaimportowania modułu.
Opcjonalnie możesz bezpośrednio przetestować manifest modułu za pomocą wywołania import-module, korzystając z samej metody "dot-sourcing" manifestu.
Import-Module .\myModuleName.psd1
Elementy manifestu modułu
W poniższej tabeli opisano elementy, które można uwzględnić w manifeście modułu.
Element | Domyślny | Opis |
---|---|---|
Tryb główny Typu: String |
<empty string> |
Moduł skryptu lub plik modułu binarnego skojarzony z tym manifestem. Poprzednie wersje programu PowerShell nazwały ten element moduleToProcess. Możliwe typy dla modułu głównego mogą być puste, co powoduje utworzenie modułu manifestu, nazwy modułu skryptu ( ) lub nazwy modułu binarnego .psm1 ( lub .exe .dll ). Umieszczenie nazwy manifestu modułu ( ) lub pliku skryptu () w tym .psd1 .ps1 elemencie powoduje błąd. Przykład: RootModule = 'ScriptModule.psm1' |
ModuleVersion Typu: Version |
'0.0.1' |
Numer wersji tego modułu. Jeśli wartość nie zostanie określona, New-ModuleManifest użyje wartości domyślnej. Ciąg musi być w stanie wykonać konwersję na typ Version , na przykład #.#.#.# . Import-Module Ładuje pierwszy moduł, który znajdzie na $PSModulePath, która pasuje do nazwy, i ma co najmniej tak wysoką wartość ModuleVersion jako parametr MinimumVersion. Aby zaimportować określoną wersję, użyj Import-Module parametru RequiredVersion polecenia cmdlet.Przykład: ModuleVersion = '1.0' |
IDENTYFIKATOR GUID Typu: GUID |
'<GUID>' |
Identyfikator używany do unikatowego identyfikowania tego modułu. Jeśli wartość nie zostanie określona, New-ModuleManifest funkcja automatycznie wygeneruje wartość. Obecnie nie można zaimportować modułu według identyfikatora GUID. Przykład: GUID = 'cfc45206-1e49-459d-a8ad-5b571ef94857' |
Autor Typu: String |
'<Current user>' |
Autor tego modułu. Jeśli wartość nie zostanie określona, New-ModuleManifest program użyje bieżącego użytkownika. Przykład: Author = 'AuthorNameHere' |
CompanyName Typu: String |
'Unknown' |
Firma lub dostawca tego modułu. Jeśli wartość nie zostanie określona, New-ModuleManifest użyje wartości domyślnej.Przykład: CompanyName = 'Fabrikam' |
Prawa autorskie Typu: String |
'(c) <Author>. All rights reserved.' |
Oświadczenie o prawach autorskich dla tego modułu. Jeśli wartość nie zostanie określona, program użyje wartości domyślnej z New-ModuleManifest bieżącym użytkownikiem jako <Author> . Aby określić autora, użyj author parametru. Przykład: Copyright = '2019 AuthorName. All rights reserved.' |
Opis Typu: String |
<empty string> |
Opis funkcji zapewnianych przez ten moduł. Przykład: Description = 'This is the module's description.' |
PowerShellVersion Typu: Version |
<empty string> |
Minimalna wersja aparatu programu PowerShell wymagana przez ten moduł. Prawidłowe wartości to 1.0, 2.0, 3.0, 4.0, 5.0, 5.1, 6.0, 6.1, 6.2, 7.0 i 7.1. Przykład: PowerShellVersion = '5.0' |
PowerShellHostName (Nazwa hosta programu PowerShell) Typu: String |
<empty string> |
Nazwa hosta programu PowerShell wymaganego przez ten moduł. Ta nazwa jest dostarczana przez program PowerShell. Aby znaleźć nazwę programu hosta, w programie wpisz: $host.name .Przykład: PowerShellHostName = 'ConsoleHost' |
PowerShellHostVersion Typu: Version |
<empty string> |
Minimalna wersja hosta programu PowerShell wymagana przez ten moduł. Przykład: PowerShellHostVersion = '2.0' |
DotNetFrameworkVersion Typu: Version |
<empty string> |
Minimalna wersja pakietu Microsoft .NET Framework wymagana przez ten moduł. To wymaganie wstępne dotyczy tylko wersji programu PowerShell Desktop, takiej jak PowerShell 5.1. Przykład: DotNetFrameworkVersion = '3.5' |
CLRVersion Typu: Version |
<empty string> |
Minimalna wersja środowiska uruchomieniowego języka wspólnego (CLR) wymagana przez ten moduł. To wymaganie wstępne dotyczy tylko wersji programu PowerShell Desktop, takiej jak PowerShell 5.1. Przykład: CLRVersion = '3.5' |
Processorarchitecture Typu: ProcessorArchitecture |
<empty string> |
Architektura procesora (None, X86, Amd64) wymagana przez ten moduł. Prawidłowe wartości to x86, AMD64, Arm, IA64, MSIL i None (nieznane lub nieokreślone). Przykład: ProcessorArchitecture = 'x86' |
RequiredModules Typu: Object[] |
@() |
Moduły, które muszą zostać zaimportowane do środowiska globalnego przed zaimportowaniem tego modułu. Ładuje wszystkie moduły wymienione na liście, chyba że zostały już załadowane. Na przykład niektóre moduły mogą być już załadowane przez inny moduł. Można określić określoną wersję do załadowania przy RequiredVersion użyciu, a nie ModuleVersion . Gdy ModuleVersion jest używany, załaduje najnowszą dostępną wersję z określoną minimalną wersją. W wartości parametru można łączyć ciągi i tabele skrótów.Przykład: RequiredModules = @("MyModule", @{ModuleName="MyDependentModule"; ModuleVersion="2.0"; GUID="cfc45206-1e49-459d-a8ad-5b571ef94857"}) Przykład: RequiredModules = @("MyModule", @{ModuleName="MyDependentModule"; RequiredVersion="1.5"; GUID="cfc45206-1e49-459d-a8ad-5b571ef94857"}) |
RequiredAssemblies Typu: String[] |
@() |
Zestawy, które muszą zostać załadowane przed zaimportowanie tego modułu. Określa nazwy plików .dll zestawu (), których wymaga moduł.Program PowerShell ładuje określone zestawy przed zaktualizowaniem typów lub formatów, zaimportowaniu zagnieżdżonych modułów lub zaimportowaniu pliku modułu określonego w wartości klucza RootModule. Użyj tego parametru, aby wyświetlić listę wszystkich zestawów wymaganych przez moduł. Przykład: RequiredAssemblies = @("assembly1.dll", "assembly2.dll", "assembly3.dll") |
ScriptsToProcess Typu: String[] |
@() |
Pliki skryptu ( ), które są uruchamiane w stanie sesji .ps1 wywołującego podczas importowania modułu. Może to być stan sesji globalnej lub, w przypadku modułów zagnieżdżonych, stan sesji innego modułu. Za pomocą tych skryptów można przygotować środowisko tak samo jak skrypt logowania.Te skrypty są uruchamiane przed załadowaniem modułów wymienionych w manifeście. Przykład: ScriptsToProcess = @("script1.ps1", "script2.ps1", "script3.ps1") |
TypesToProcess Typu: String[] |
@() |
Wpisz pliki ( .ps1xml ), które mają zostać załadowane podczas importowania tego modułu. Przykład: TypesToProcess = @("type1.ps1xml", "type2.ps1xml", "type3.ps1xml") |
FormatsToProcess Typu: String[] |
@() |
Formatuj pliki ( .ps1xml ) do załadowania podczas importowania tego modułu. Przykład: FormatsToProcess = @("format1.ps1xml", "format2.ps1xml", "format3.ps1xml") |
NestedModules Typu: Object[] |
@() |
Moduły do zaimportowania jako moduły zagnieżdżone modułu określonego w module RootModule (alias:ModuleToProcess). Dodanie nazwy modułu do tego elementu jest podobne do wywoływania Import-Module z poziomu skryptu lub kodu zestawu. Główną różnicą w przypadku korzystania z pliku manifestu jest to, że łatwiej jest zobaczyć, co ładujesz. Jeśli nie uda się załadować modułu, nie załadowano jeszcze rzeczywistego modułu.Oprócz innych modułów możesz również załadować tutaj pliki skryptu .ps1 (). Te pliki będą wykonywane w kontekście modułu głównego. Jest to odpowiednik kropki w celu nakierowania skryptu w module głównym. Przykład: NestedModules = @("script.ps1", @{ModuleName="MyModule"; ModuleVersion="1.0.0.0"; GUID="50cdb55f-5ab7-489f-9e94-4ec21ff51e59"}) |
FunctionsToExport Typu: String[] |
@() |
Określa funkcje do wyeksportowania z tego modułu, aby uzyskać najlepszą wydajność, nie używaj symboli wieloznacznych i nie usuwaj wpisu, użyj pustej tablicy, jeśli nie ma żadnych funkcji do wyeksportowania. Domyślnie żadne funkcje nie są eksportowane. Za pomocą tego klucza możesz wyświetlić listę funkcji wyeksportowanych przez moduł. Moduł eksportuje funkcje do stanu sesji wywołującego. Stan sesji wywołującej może być stanem sesji globalnej lub, w przypadku modułów zagnieżdżonych, stanem sesji innego modułu. Podczas łańcucha modułów zagnieżdżonych wszystkie funkcje eksportowane przez zagnieżdżony moduł zostaną wyeksportowane do stanu sesji globalnej, chyba że moduł w łańcuchu ogranicza funkcję przy użyciu klucza FunctionsToExport. Jeśli manifest eksportuje aliasy dla funkcji, ten klucz może usunąć funkcje, których aliasy są wymienione w kluczu AliasesToExport, ale ten klucz nie może dodać aliasów funkcji do listy. Przykład: FunctionsToExport = @("function1", "function2", "function3") |
Polecenia cmdletToExport Typu: String[] |
@() |
Określa polecenia cmdlet do wyeksportowania z tego modułu, aby uzyskać najlepszą wydajność, nie używaj symboli wieloznacznych i nie usuwaj wpisu, użyj pustej tablicy, jeśli nie ma żadnych cmdlet do wyeksportowania. Domyślnie nie są eksportowane żadne polecenia cmdlet. Za pomocą tego klucza można wyświetlić listę polecenia cmdlet wyeksportowane przez moduł. Stan sesji wywołującej może być stanem sesji globalnej lub, w przypadku modułów zagnieżdżonych, stanem sesji innego modułu. W przypadku łańcucha modułów zagnieżdżonych wszystkie polecenia cmdlet wyeksportowane przez moduł zagnieżdżony zostaną wyeksportowane do stanu sesji globalnej, chyba że moduł w łańcuchu ogranicza polecenie cmdlet przy użyciu klucza CmdletsToExport. Jeśli manifest eksportuje aliasy dla polecenia cmdlet, ten klucz może usunąć polecenia cmdlet, których aliasy są wymienione w kluczu AliasesToExport, ale ten klucz nie może dodać aliasów polecenia cmdlet do listy. Przykład: CmdletsToExport = @("Get-MyCmdlet", "Set-MyCmdlet", "Test-MyCmdlet") |
VariablesToExport Typu: String[] |
'*' |
Określa zmienne eksportowane przez moduł do stanu sesji wywołującego. Symbole wieloznaczne są dozwolone. Domyślnie eksportowane są wszystkie zmienne ( '*' ). Możesz użyć tego klucza, aby ograniczyć zmienne eksportowane przez moduł.Stan sesji wywołującej może być stanem sesji globalnej lub, w przypadku modułów zagnieżdżonych, stanem sesji innego modułu. W przypadku łańcucha modułów zagnieżdżonych wszystkie zmienne eksportowane przez moduł zagnieżdżony zostaną wyeksportowane do stanu sesji globalnej, chyba że moduł w łańcuchu ogranicza zmienną przy użyciu klucza VariablesToExport. Jeśli manifest eksportuje również aliasy zmiennych, ten klucz może usunąć zmienne, których aliasy są wymienione w kluczu AliasesToExport, ale ten klucz nie może dodać aliasów zmiennych do listy. Przykład: VariablesToExport = @('$MyVariable1', '$MyVariable2', '$MyVariable3') |
AliasyToExport Typu: String[] |
@() |
Określa aliasy do wyeksportowania z tego modułu, aby uzyskać najlepszą wydajność, nie używaj symboli wieloznacznych i nie usuwaj wpisu, użyj pustej tablicy, jeśli nie ma aliasów do wyeksportowania. Domyślnie aliasy nie są eksportowane. Za pomocą tego klucza możesz wyświetlić listę aliasów wyeksportowanych przez moduł. Moduł eksportuje aliasy do stanu sesji wywołującego. Stan sesji wywołującej może być stanem sesji globalnej lub, w przypadku modułów zagnieżdżonych, stanem sesji innego modułu. W przypadku łańcucha modułów zagnieżdżonych wszystkie aliasy eksportowane przez moduł zagnieżdżony zostaną ostatecznie wyeksportowane do stanu sesji globalnej, chyba że moduł w łańcuchu ogranicza alias przy użyciu klucza AliasesToExport. Przykład: AliasesToExport = @("MyAlias1", "MyAlias2", "MyAlias3") |
DscResourcesToExport Typu: String[] |
@() |
Określa zasoby DSC do wyeksportowania z tego modułu. Symbole wieloznaczne są dozwolone. Przykład: DscResourcesToExport = @("DscResource1", "DscResource2", "DscResource3") |
Lista modułów Typu: Object[] |
@() |
Określa wszystkie moduły spakowane w tym module. Te moduły można wprowadzać według nazwy, przy użyciu ciągu rozdzielanych przecinkami lub jako tabelę skrótów z kluczami ModuleName i GUID. Tabela skrótów może również mieć opcjonalny klucz ModuleVersion. Klucz ModuleList jest przeznaczony do działania jako spis modułów. Te moduły nie są przetwarzane automatycznie. Przykład: ModuleList = @("SampleModule", "MyModule", @{ModuleName="MyModule"; ModuleVersion="1.0.0.0"; GUID="50cdb55f-5ab7-489f-9e94-4ec21ff51e59"}) |
Filelist Typu: String[] |
@() |
Lista wszystkich plików spakowana z tym modułem. Podobnie jak w przypadku listy ModuleList lista FileList jest listą spisu i w przeciwnym razie nie jest przetwarzana. Przykład: FileList = @("File1", "File2", "File3") |
PrivateData Typu: Object |
@{...} |
Określa wszystkie dane prywatne, które muszą zostać przekazane do modułu głównego określonego przez klucz RootModule (alias: ModuleToProcess). PrivateData to tabela skrótów, która składa się z kilku elementów: Tags, LicenseUri, ProjectURI, IconUri, ReleaseNotes, Prerelease, RequireLicenseAcceptance i ExternalModuleDependencies. |
Tagi Typu: String[] |
@() |
Tagi ułatwiają odnajdywanie modułów w galeriach online. Przykład: Tags = "PackageManagement", "PowerShell", "Manifest" |
LicenseUri Typu: Uri |
<empty string> |
Adres URL licencji dla tego modułu. Przykład: LicenseUri = 'https://www.contoso.com/license' |
ProjectUri Typu: Uri |
<empty string> |
Adres URL głównej witryny internetowej dla tego projektu. Przykład: ProjectUri = 'https://www.contoso.com/project' |
IconUri Typu: Uri |
<empty string> |
Adres URL ikony reprezentującej ten moduł. Przykład: IconUri = 'https://www.contoso.com/icons/icon.png' |
ReleaseNotes Typu: String |
<empty string> |
Określa informacje o wersji modułu. Przykład: ReleaseNotes = 'The release notes provide information about the module. |
Wstępną Typu: String |
<empty string> |
Ten parametr został dodany w programie PowerShellGet 1.6.6. Ciąg wersji wstępnej, który identyfikuje moduł jako wersję wstępną w galeriach online. Przykład: PreRelease = 'This module is a prerelease version. |
RequireLicenseAcceptance Typu: Boolean |
$true |
Ten parametr został dodany w programie PowerShellGet 1.5. Flaga wskazująca, czy moduł wymaga jawnej akceptacji przez użytkownika w celu zainstalowania, zaktualizowania lub zapisania. Przykład: RequireLicenseAcceptance = $false |
ExternalModuleDependencies Typu: String[] |
@() |
Ten parametr został dodany w programie PowerShellGet w wersji 2. Lista modułów zewnętrznych, od których zależy ten moduł. Przykład: ExternalModuleDependencies = @("ExtModule1", "ExtModule2", "ExtModule3") |
HelpInfoURI Typu: String |
<empty string> |
HelpInfo URI tego modułu. Przykład: HelpInfoURI = 'https://www.contoso.com/help' |
DefaultCommandPrefix Typu: String |
<empty string> |
Domyślny prefiks poleceń wyeksportowanych z tego modułu. Zastąp domyślny prefiks przy Import-Module -Prefix użyciu . Przykład: DefaultCommandPrefix = 'My' |
Manifest przykładowego modułu
Poniższy przykładowy manifest modułu został utworzony za pomocą polecenia w New-ModuleManifest
programie PowerShell 7 i zawiera domyślne klucze i wartości.
#
# Module manifest for module 'SampleModuleManifest'
#
# Generated by: User01
#
# Generated on: 10/15/2019
#
@{
# Script module or binary module file associated with this manifest.
# RootModule = ''
# Version number of this module.
ModuleVersion = '0.0.1'
# Supported PSEditions
# CompatiblePSEditions = @()
# ID used to uniquely identify this module
GUID = 'b632e90c-df3d-4340-9f6c-3b832646bf87'
# Author of this module
Author = 'User01'
# Company or vendor of this module
CompanyName = 'Unknown'
# Copyright statement for this module
Copyright = '(c) User01. All rights reserved.'
# Description of the functionality provided by this module
# Description = ''
# Minimum version of the PowerShell engine required by this module
# PowerShellVersion = ''
# Name of the PowerShell host required by this module
# PowerShellHostName = ''
# Minimum version of the PowerShell host required by this module
# PowerShellHostVersion = ''
# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''
# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# CLRVersion = ''
# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''
# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()
# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()
# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()
# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = @()
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @()
# Variables to export from this module
VariablesToExport = '*'
# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()
# DSC resources to export from this module
# DscResourcesToExport = @()
# List of all modules packaged with this module
# ModuleList = @()
# List of all files packaged with this module
# FileList = @()
# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{
PSData = @{
# Tags applied to this module. These help with module discovery in online galleries.
# Tags = @()
# A URL to the license for this module.
# LicenseUri = ''
# A URL to the main website for this project.
# ProjectUri = ''
# A URL to an icon representing this module.
# IconUri = ''
# ReleaseNotes of this module
# ReleaseNotes = ''
# Prerelease string of this module
# Prerelease = ''
# Flag to indicate whether the module requires explicit user acceptance for install/update/save
RequireLicenseAcceptance = $true
# External dependent modules of this module
# ExternalModuleDependencies = @()
} # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfo URI of this module
# HelpInfoURI = ''
# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''
}