如何在VSTS构建任务

时间:2017-12-30 21:15:28

标签: powershell module azure-pipelines

我正在尝试设置使用自定义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个错误写入错误流。

好像我的模块没有加载。

我该如何做到这一点?

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构建来识别。