验证模块清单文件是否准确描述了模块的内容。

语法

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

说明

Test-ModuleManifest cmdlet 验证在模块清单 (.psd1) 文件中列出的文件在指定路径下是否实际存在。

此 cmdlet 旨在帮助模块作者测试其清单文件。模块用户也可以在脚本和命令中使用此 cmdlet,在运行依赖于该模块的脚本之前检测错误。

Test-ModuleManifest cmdlet 返回一个表示模块的对象(该对象与 Get-Module 返回的对象属于同种类型)。如果有任何文件在清单中指定的位置不存在,则该 cmdlet 还会针对每个缺少的文件生成一个错误。

参数

-Path <string>

指定模块清单文件的路径。输入具有 .psd1 文件扩展名的模块清单文件的路径(可选)和名称。默认位置为当前目录。此参数是必需的。参数名(“Path”)为可选项。还可以将路径通过管道传递给 Test-ModuleManifest。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.String

可以将模块清单的路径通过管道传送到 Test-ModuleManifest。

输出

System.Management.Automation.PSModuleInfo

Test-ModuleManifest 返回表示模块的 PSModuleInfo 对象。即使清单存在错误,它也会返回此对象。

示例 1

C:\PS>test-ModuleManifest -path $pshome\Modules\TestModule.psd1

说明
-----------
此命令测试 TestModule.psd1 模块清单。






示例 2

C:\PS>"$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 pro
cessed because the file was not found. Please correct the path and try aga
in.
At line:1 char:34
+ "$pshome\Modules\TestModule.psd1" | test-modulemanifest <<<<
    + CategoryInfo          : ResourceUnavailable: (C:\Windows\System32\Win
dowsPowerShell\v1.0\Modules\TestModule\TestTypes.ps1xml:String) [Test-Modul
eManifest], FileNotFoundException
    + FullyQualifiedErrorId : Modules_TypeDataFileNotFound,Microsoft.
PowerShell.Commands.TestModuleManifestCommandName


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

说明
-----------
此命令使用管道运算符 (|) 将路径字符串发送到 Test-ModuleManifest。

命令输出显示出测试失败,原因是没有找到在清单中列出的 TestTypes.ps1xml 文件。






示例 3

C:\PS>function Bool-ModuleManifest ($path)
    {$a = dir $path | test-modulemanifest -erroraction SilentlyContinue; $?}

说明
-----------
此函数类似于 Test-ModuleManifest,但它返回一个布尔值;如果清单通过测试,则返回“True”,否则返回“False”。

该函数使用 Get-ChildItem cmdlet(别名为 dir)获取由 $path 变量指定的模块清单。它使用管道运算符 (|) 将文件对象传递到 Test-ModuleManifest cmdlet。

Test-ModuleManifest 命令使用值为 SilentlyContinue 的 ErrorAction 通用参数来禁止显示命令生成的任何错误。该命令还将 Test-ModuleManifest 返回的 PSModuleInfo 对象保存在 $a 变量中,使得该对象不会显示。

然后,该命令在单独的命令中(分号 [;] 是命令分隔符)显示 $? 自动变量的值。如果前一个命令没有生成错误,则该自动变量返回“True”,否则返回“False”。

可以在条件语句中使用此函数,例如在 Import-Module 命令或使用模块的命令前面的语句。






另请参阅




目录