Test-ModuleManifest
验证模块清单文件是否准确描述了模块的内容。
语法
Test-ModuleManifest
[-Path] <String>
[<CommonParameters>]
说明
Test-ModuleManifest
cmdlet 可验证模块清单 (.psd1
) 文件中列出的文件实际是否存在于指定路径中。
此 cmdlet 旨在帮助模块作者测试其清单文件。 模块用户还可以在脚本和命令中使用此 cmdlet 来检测错误,然后再运行基于该模块的脚本。
Test-ModuleManifest
返回一个表示模块的对象。 这是 Get-Module
返回的相同类型的对象。 如果有任何文件在清单中指定的位置上不存在,则该 cmdlet 还将针对每个缺少的文件生成一个错误。
示例
示例 1:测试清单
Test-ModuleManifest -Path "$pshome\Modules\TestModule.psd1"
此命令测试 TestModule.psd1
模块清单。
示例 2:使用管道来测试清单
"$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 : {}
此命令使用管道运算符 (|
) 将路径字符串发送到 Test-ModuleManifest
。
命令输出显示测试未通过,因为找不到清单中所列出的 TestTypes.ps1xml 文件。
示例 3:编写函数来测试模块清单
function Test-ManifestBool ($path)
{$a = dir $path | Test-ModuleManifest -ErrorAction SilentlyContinue; $?}
此函数类似于 Test-ModuleManifest
,但它返回布尔值。 如果清单通过测试,则该函数返回 $True
,否则返回 $False
。
该函数使用 Get-ChildItem cmdlet (alias = dir) 获取由 $path
变量指定的模块清单。 该命令使用管道运算符 (|
) 将文件对象传递给 Test-ModuleManifest
。
Test-ModuleManifest
使用值为 SilentlyContinue 的 ErrorAction 通用参数禁止显示该命令生成的任何错误。 它还将 Test-ModuleManifest
返回的 PSModuleInfo 对象保存在 $a 变量中。 因此,不会显示该对象。
然后,该函数在单独的命令中显示 $?
自动变量的值。 如果上一命令未生成错误,则此命令会显示 $True
,否则会显示 $False
。
可以在条件语句(例如可能位于 Import-Module
命令或使用模块的命令之前的语句)中使用此函数。
参数
-Path
指定清单文件的路径和文件名。 输入具有 .psd1
文件扩展名的模块清单文件的可选路径和名称。 默认位置为当前目录。 允许使用通配符,但它们必须解析为单个模块清单文件。
此参数是必需的。 还可以通过管道将路径传递给 Test-ModuleManifest
。
类型: | String |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | True |
输入
还可以通过管道将模块清单的路径传递给此 cmdlet。
输出
此 cmdlet 会返回表示模块的 PSModuleInfo 对象。 即使清单有错误,它也会返回此对象。