Zum Hauptinhalt springen

Modul-Manifest

Wie man in der Ausgabe von Get-Command -Module Helperfunctions sehen kann, gibt Powershell zu jedem Cmdlet eine Versionsnummer aus.

Um Meta-Informationen wie die Version oder den Autoren eines Modules mitzugeben, brauchen Sie eine Manifest-Datei. Es handelt sich um eine Datei mit der Endung .psd1, die aus einer großen Hash-Table besteht, in der alle relevanten Informationen über ein Modul gespeichert werden können.

Um eine Manifest-Datei zu erstellen, können Sie das Cmdlet New-Modulemanifest verwenden.


$Module = Get-Module -Name Helperfunctions

$Psd1 = ( Join-Path -Path $Module.ModuleBase -ChildPath $Module.Name ) + '.psd1' New-ModuleManifest -Path $Psd1 -Author 'Holger' FunctionsToExport * `

ModuleVersion '1.0' RootModule $Module.Path

In der ersten Zeile des Beispiels werden die Informationen über das aktuell installierte Modul abgefragt. Das ist nicht notwendig, erspart es uns aber, die Pfade für die Dateien manuell herauszusuchen und ein-zugeben.

In der zweiten Zeile wird aus dem Ordner ($Module.Modulebase) und dem Namen des Moduls ($Mo-dule.Name) ein neuer Pfad erstellt. Hierfür wird das Kommando Join-Path verwendet, das einfach zwei Strings zu einem gültigen Pfad zusammenfügt. Anschließend wird die Dateiendung .psd1 angehängt.

In der dritten Zeile wird mit dienste New-Modulemanifest eine Manifestdatei generiert. Für alle Meta-daten in der Datei hat New-Modulemanifest einen Parameter. Im Beispiel wird der Pfad der Manifestda-tei, der Autor, die zu exportierenden Funktionen (s. weiter unten), die Version des Moduls und das Root-modul angegeben. Das Rootmodul ist besonders wichtig, denn wenn in einem Modulordner eine <Mo-dulname>.psd1-Datei liegt, wird die .psm1-Datei nicht mehr standardmäßig geladen. Stattdessen gibt die Eigenschaft Rootmodul das Skript vor, das gestartet werden soll.

Die Helperfunctions.psd1 sollte nun ungefähr so aussehen:


@{


# Die diesem Manifest zugeordnete Skript- oder Binärmoduldatei. RootModule = '.\Helperfunctions.psm1'


# Die Versionsnummer dieses Moduls ModuleVersion = '1.0'


# Unterstützte PSEditions

# CompatiblePSEditions = @()


# ID zur eindeutigen Kennzeichnung dieses Moduls GUID = 'bcc731c2-0db3-4e8a-b452-3b5300cf4fd3'


# Autor dieses Moduls Author = 'Me'


# Die für dieses Modul mindestens erforderliche Version des Windows PowerShell-Mo-duls

# PowerShellVersion = "


# Die Module, die vor dem Importieren dieses Moduls in die globale Umgebung geladen werden müssen

# RequiredModules = @()

# Die Skriptdateien (PS1-Dateien), die vor dem Importieren dieses Moduls in der Um-gebung des Aufrufers ausgeführt werden.

# ScriptsToProcess = @()

# Aus diesem Modul zu exportierende Funktionen. FunctionsToExport = '*'


# Aus diesem Modul zu exportierende Cmdlets. CmdletsToExport = '*'


# Die aus diesem Modul zu exportierenden Variablen VariablesToExport = '*'

# Aus diesem Modul zu exportierende Aliase. AliasesToExport = '*'


}

Die Datei ist nur in Auszügen abgebildet, aber man kann erkennen, dass es sich hier um eine Hash-Table handelt. Nicht konfigurierte Parameter sind auskommentiert. Die mit New-Modulemanifest angegebe-nen Parameter sind bereits eingetragen, genauso wie Benutzerinformationen, die Powershell direkt aus dem Host auslesen konnte, und eine eindeutige Modulkennung in Form einer GUID. Wenn Sie eine Manifestdatei von einem bestehenden Modul kopieren, anstatt sie neu anzulegen, müssen Sie auf jeden Fall eine neue GUID erstellen. Das können Sie ab Powershell 5 mit dem Cmdlet New-Guid erledigen, und in älteren Versionen einer .NET-Methode:


New-Guid [guid]::NewGuid()