在VSTS托管代理上使用PowerShellGet

时间:2016-04-30 11:22:22

标签: azure-devops azure-pipelines azure-pipelines-build-task powershellget

我在构建过程中使用Visual Studio Team Services(VSTS)托管构建代理。我的构建主要依赖于调用我在git中使用的脚本的“PowerShell”步骤。在此脚本中,我想使用PowerShellGet管理PowerShell模块。例如,我希望只需运行

即可安装pscx
Install-Module -Name pscx

不幸的是,托管代理使用PowerShell 4并且没有安装PowerShellGet模块。因此,Install-Module功能不可用。

有人建议在VSTS托管代理上使用PowerShellGet模块吗?请注意,由于我在此计算机上没有管理员权限,因此无法安装为PowerShell 4安装PowerShellGet的msi。

1 个答案:

答案 0 :(得分:5)

为了能够使用PowerShellGet,需要两个PowerShell模块:

  • PowerShellGet
  • PackageManagement

这些可以通过PowerShell 5或PowerShell Gallery上提供的msi安装程序开箱即用。

您可以简单地将它们添加到您的git存储库(例如:在名为PsModules的文件夹中),而不是通过msi部署这些模块。您可以在安装了PS5或msi的计算机上获取这些模块。它们通常位于C:\Program Files\WindowsPowerShell\Modules文件夹中。

然后,将PsModules文件夹添加到PSModulePath环境变量中。从那里开始,可以使用PowerShellGet,如下所示:

$env:PSModulePath = "$env:BUILD_SOURCESDIRECTORY\PsModules;$env:PSModulePath"
Import-Module PowerShellGet
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -Scope currentuser
Save-Module pscx -path "$env:BUILD_SOURCESDIRECTORY\PsModules"
import-module pscx
Write-Host '************************'
Get-Command -module pscx