我正在尝试设置使用自定义Powershell脚本的VSTS构建定义。我已经创建了一个BuildPackage.psm1模块文件,其中包含两个函数,我可以在两个不同的构建定义中使用它们。我试图让其中一个工作,并设置一个任务来导入模块,然后执行一个任务来运行其中一个函数。
我已将模块复制到此位置:
。\ SRC \工具\ 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,我会得到以下内容:
VERBOSE:从路径'C:\ BA \ 47 \ s \ src \ Tools \ PSModules \ BuildFontPackage \ BuildFontPackage.psm1'加载模块。
VERBOSE:导出功能'New-Package'。
VERBOSE:导出功能'New-AllPackages' VERBOSE:导入功能'New-AllPackages' VERBOSE:导入函数'New-Package'。
但是,在以下任务中,当我尝试在模块中使用New-Package功能时,我收到此错误:
New-Package:术语“New-Package”未被识别为cmdlet,函数,脚本文件或 进程已完成,退出代码为0,并且已将1个错误写入错误流。
好像我的模块没有加载。
我该如何做到这一点?
答案 0 :(得分:0)
您似乎正在使用私人代理。因此,您可以将BuildFontPackage\BuildFontPackage.psm1
复制到$env:PSModulePath
。然后,您可以直接在VSTS构建中使用powershell模块。
首先,您可以通过在本地计算机(私有代理)中执行echo $env:PSModulePath
来打印路径。它将显示如下路径列表:
C:\Users\username\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:
\windows\system32\WindowsPowerShell\v1.0\Modules\;c:\Program Files\Microsoft Security Client\MpPro
vider\;C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\;C:\Program Files\
AppFabric 1.1 for Windows Server\PowershellModules;C:\Program Files\Microsoft System Center 2012 R
2\Virtual Machine Manager\bin\psModules\;C:\Program Files\Microsoft System Center 2012 R2\Service
Manager\PowerShell\;C:\Program Files\WindowsPowerShell\Modules\;C:\Program Files (x86)\Microsoft S
DKs\Azure\PowerShell\ResourceManager\AzureResourceManager\;C:\Program Files (x86)\Microsoft SDKs\A
zure\PowerShell\ServiceManagement\;C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Storage\
然后将BuildFontPackage\BuildFontPackage.psm1
复制到$env:PSModulePath
中的任意路径。
现在你可以再次构建,PowerShell模块应该由VSTS构建来识别。