Freigeben über


Test-ModuleManifest

Überprüft, ob eine Modulmanifestdatei den Inhalt eines Moduls genau beschreibt.

Syntax

Test-ModuleManifest
    [-Path] <String>
    [<CommonParameters>]

Beschreibung

Das Cmdlet Test-ModuleManifest überprüft, ob sich die Dateien, die in der Modulmanifestdatei (PSD1) aufgeführt sind, tatsächlich in den angegebenen Pfaden befinden.

Dieses Cmdlet soll Modulautoren beim Testen von Manifestdateien unterstützen. Modulbenutzer können dieses Cmdlet auch in Skripts und Befehlen verwenden, um Fehler zu erkennen, bevor sie Skripts ausführen, die vom Modul abhängen.

Test-ModuleManifest gibt ein Objekt zurück, das das Modul darstellt. Dies ist derselbe Objekttyp, den Get-Module zurückgibt. Wenn Dateien nicht an den im Manifest angegebenen Speicherorten vorhanden sind, generiert das Cmdlet einen Fehler für jede fehlende Datei.

Beispiele

Beispiel 1: Testen eines Manifests

test-ModuleManifest -Path "$pshome\Modules\TestModule.psd1"

Dieser Befehl testet das Modulmanifest „TestModule.psd1“.

Beispiel 2: Testen eines Manifests mithilfe der Pipeline

"$pshome\Modules\TestModule.psd1" | test-modulemanifest

Test-ModuleManifest : The specified type data file 'C:\Windows\System32\Wi
ndowsPowerShell\v1.0\Modules\TestModule\TestTypes.ps1xml' could not be processed because the file was not found. Please correct the path and try again.
At line:1 char:34
+ "$pshome\Modules\TestModule.psd1" | test-modulemanifest <<<<
+ CategoryInfo          : ResourceUnavailable: (C:\Windows\System32\WindowsPowerShell\v1.0\Modules\TestModule\TestTypes.ps1xml:String) [Test-ModuleManifest], FileNotFoundException
+ FullyQualifiedErrorId : Modules_TypeDataFileNotFound,Microsoft.PowerShell.Commands.TestModuleManifestCommandName

Name              : TestModule
Path              : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\TestModule\TestModule.psd1
Description       :
Guid              : 6f0f1387-cd25-4902-b7b4-22cff6aefa7b
Version           : 1.0
ModuleBase        : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\TestModule
ModuleType        : Manifest
PrivateData       :
AccessMode        : ReadWrite
ExportedAliases   : {}
ExportedCmdlets   : {}
ExportedFunctions : {}
ExportedVariables : {}
NestedModules     : {}

Dieser Befehl verwendet einen Pipelineoperator (|), um eine Pfadzeichenfolge an Test-ModuleManifest zu senden.

Die Befehlsausgabe zeigt einen Testfehler, da die im Manifest aufgeführte Datei „TestTypes.ps1xml“ nicht gefunden wurde.

Beispiel 3: Schreiben einer Funktion zum Testen eines Modulmanifests

function Test-ManifestBool ($path)

{$a = dir $path | Test-ModuleManifest -ErrorAction SilentlyContinue; $?}

Diese Funktion ähnelt Test-ModuleManifest, gibt jedoch einen booleschen Wert zurück. Die Funktion gibt $True zurück, wenn das Manifest den Test bestanden hat und andernfalls $False.

Die Funktion verwendet das cmdlet Get-ChildItem alias = dir, um das modulmanifest abzurufen, das von der $path-Variable angegeben wird. Der Befehl verwendet einen Pipelineoperator (|), um das Dateiobjekt an Test-ModuleManifest zu übergeben.

Test-ModuleManifest verwendet den allgemeinen ErrorAction-Parameter mit dem Wert SilentlyContinue, um die Anzeige von Fehlern zu unterdrücken, die der Befehl generiert. Außerdem wird das PSModuleInfo-Objekt gespeichert, das Test-ModuleManifest in der variablen $a zurückgibt. Daher wird das Objekt nicht angezeigt.

Anschließend zeigt die Funktion in einem separaten Befehl den Wert des $? automatische Variable. Wenn der vorherige Befehl keinen Fehler generiert, zeigt der Befehl $True an, andernfalls $False.

Sie können diese Funktion in bedingten Anweisungen verwenden, z. B. denen, die einem Import-Module-Befehl oder einem Befehl, der das Modul verwendet, vorangestellt werden können.

Parameter

-Path

Gibt einen Pfad und Dateinamen für die Manifestdatei an. Geben Sie einen optionalen Pfad und Namen der Modulmanifestdatei ein, die die Dateinamenerweiterung PSD1 aufweist. Der Standardspeicherort ist das aktuelle Verzeichnis. Feldhalterzeichen werden unterstützt, müssen jedoch in eine einzelne Modulmanifestdatei aufgelöst werden. Dieser Parameter ist erforderlich. Sie können auch einen Pfad an Test-ModuleManifest übergeben.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

Eingaben

String

Sie können den Pfad an ein Modulmanifest an dieses Cmdlet weiterleiten.

Ausgaben

PSModuleInfo

Dieses Cmdlet gibt ein PSModuleInfo-Objekt zurück, das das Modul darstellt. Dieses Objekt wird auch dann zurückgegeben, wenn das Manifest Fehler aufweist.