我在构建过程中使用Visual Studio Team Services(VSTS)托管构建代理。我的构建主要依赖于调用我在git中使用的脚本的“PowerShell”步骤。在此脚本中,我想使用PowerShellGet管理PowerShell模块。例如,我希望只需运行
即可安装pscxInstall-Module -Name pscx
不幸的是,托管代理使用PowerShell 4并且没有安装PowerShellGet
模块。因此,Install-Module
功能不可用。
有人建议在VSTS托管代理上使用PowerShellGet模块吗?请注意,由于我在此计算机上没有管理员权限,因此无法安装为PowerShell 4安装PowerShellGet的msi。
答案 0 :(得分:5)
为了能够使用PowerShellGet,需要两个PowerShell模块:
这些可以通过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