Test-ModuleManifest
Überprüft, ob eine Modulmanifestdatei den Inhalt eines Moduls genau beschreibt.
Syntax
Test-ModuleManifest
[-Path] <String>
[<CommonParameters>]
Beschreibung
Das Test-ModuleManifest
Cmdlet ü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, Get-Module
der zurückgegeben wird. 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 TestModule.psd1
Modulmanifest.
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 zu Test-ModuleManifest
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 aber einen booleschen Wert zurück. Die Funktion gibt zurück $True
, wenn das Manifest den Test bestanden hat und $False
andernfalls.
Die Funktion verwendet das Get-ChildItem Cmdlet alias = dir, um das von der $path
Variablen angegebene Modulmanifest abzurufen. Der Befehl verwendet einen Pipelineoperator (|
), um das Dateiobjekt an zu Test-ModuleManifest
ü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ückgegeben wird. Daher wird das -Objekt nicht angezeigt.
Anschließend zeigt die Funktion in einem separaten Befehl den Wert der $?
automatischen Variablen an. Wenn der vorherige Befehl keinen Fehler generiert, zeigt $True
der Befehl an, und $False
andernfalls.
Sie können diese Funktion in bedingten Anweisungen verwenden, z. B. solchen, die einem Import-Module
Befehl oder einem Befehl vorangestellt sind, der das Modul verwendet.
Parameter
-Path
Gibt einen Pfad und Dateinamen für die Manifestdatei an. Geben Sie einen optionalen Pfad und Namen der Modulmanifestdatei mit der .psd1
Dateinamenerweiterung ein. Der Standardspeicherort ist das aktuelle Verzeichnis. Wildcardzeichen werden unterstützt, müssen jedoch in eine einzelne Modulmanifestdatei aufgelöst werden.
Dieser Parameter ist erforderlich. Sie können auch einen Pfad an übergeben Test-ModuleManifest
.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
Eingaben
Sie können den Pfad an ein Modulmanifest an dieses Cmdlet übergeben.
Ausgaben
Dieses Cmdlet gibt ein PSModuleInfo-Objekt zurück, das das Modul darstellt. Dieses Objekt wird auch dann zurückgegeben, wenn das Manifest Fehler aufweist.