【发布时间】:2017-12-30 21:15:28
【问题描述】:
我正在尝试设置使用自定义 Powershell 脚本的 VSTS 构建定义。我创建了一个带有两个函数的 BuildPackage.psm1 模块文件,我可以在两个不同的构建定义中使用它们。我正在尝试让其中一个工作,并设置了一个导入模块的任务,然后是一个运行其中一个功能的任务。
我已将我的模块复制到此位置:
.\src\Tools\PSModules\BuildFontPackage\BuildFontPackage.psm1
对于第一个任务,为了导入模块,我使用以下内联脚本添加了一个 PowerShell 脚本任务:
$env:PSModulePath = "$env:BUILD_SOURCESDIRECTORY\src\Tools\PSModules;$env:PSModulePath"
Import-Module -Name BuildFontPackage.psm1
Import-Module 命令运行并且它似乎可以工作:如果我将 -Verbose 参数添加到 Import-Module,我会得到以下信息:
详细:从路径“C:\BA\47\s\src\Tools\PSModules\BuildFontPackage\BuildFontPackage.psm1”加载模块。
详细:导出函数“新包”。
详细:导出函数“New-AllPackages”。
详细:导入函数“New-AllPackages”。
VERBOSE:导入函数“New-Package”。
但是,在以下任务中,当我尝试在模块中使用 New-Package 功能时,我收到此错误:
New-Package:术语“New-Package”未被识别为 cmdlet、函数、脚本文件或 进程以退出代码 0 完成,并有 1 个错误写入错误流。
好像我的模块没有加载。
我怎样才能做到这一点?
【问题讨论】:
-
Get-Module -ListAvailable *-- 返回的是什么? -
每个任务都以干净的上下文开始,并且不保留以前加载的模块。如果您有单独的脚本任务或单独的内联脚本任务,则需要在每个任务中加载模块。
-
在这种情况下,在我用来导入它的同一个内联脚本/任务中调用模块很简单。如果涉及到更多的复杂性,那么所有的复杂性都可以合并到使用任务定义中的短内联脚本加载的模块中。
标签: powershell module azure-pipelines