Test-ModuleManifest
验证模块清单文件是否准确描述了模块的内容。
语法
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 命令或使用模块的命令前面的语句。
另请参阅
概念
Import-Module
Get-Module
New-Module
Remove-Module
Export-ModuleMember
New-ModuleManifest
about_Modules