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 die Dateien, die im Modulmanifest (.psd1
) aufgeführt sind, tatsächlich in den angegebenen Pfaden enthalten sind.
Dieses Cmdlet soll Modulautoren dabei helfen, ihre Manifestdateien zu testen. Modulbenutzer können dieses Cmdlet auch in Skripts und Befehlen verwenden, um Fehler zu erkennen, bevor skripts ausgeführt werden, die vom Modul abhängig sind.
Test-ModuleManifest
gibt ein Objekt zurück, das das Modul darstellt. Dies ist derselbe Objekttyp, der Get-Module
zurückgibt. Wenn sich dateien nicht an den speicherorten befinden, die im Manifest angegeben sind, generiert das Cmdlet auch 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 Test-ModuleManifest
zu senden.
Die Befehlsausgabe zeigt, dass der Test fehlgeschlagen ist, da die Datei "TestTypes.ps1xml", die im Manifest aufgeführt wurde, 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 ist wie 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 durch die $path
Variable angegebene Modulmanifest abzurufen. Der Befehl verwendet einen Pipelineoperator (|
), um das Dateiobjekt an Test-ModuleManifest
zu übergeben.
Test-ModuleManifest
verwendet den ErrorAction allgemeinen 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 in der variablen $a zurückgegeben Test-ModuleManifest
. 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 der Befehl $True
und andernfalls $False
an.
Sie können diese Funktion in bedingten Anweisungen verwenden, z. B. denen, die einem Import-Module
Befehl oder einem Befehl vorausgehen können, 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 ein, die über die Dateinamenerweiterung .psd1
verfügt. 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 Test-ModuleManifest
senden.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | True |
Eingaben
Sie können den Pfad zu einem Modulmanifest an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt ein PSModuleInfo--Objekt zurück, das das Modul darstellt. Es gibt dieses Objekt zurück, auch wenn das Manifest Fehler aufweist.