Использование PowerShellGet на размещенных агентах VSTS
Я использую размещенные в Visual Studio Team Services агенты сборки в процессе сборки. Мои сборки в основном основаны на шаге PowerShell, который вызывает мой скрипт в git. Из этого скрипта я хотел бы управлять модулями PowerShell с помощью PowerShellGet. Например, я хотел бы иметь возможность установить pscx, просто запустив
Install-Module -Name pscx
К сожалению, размещенные агенты используют PowerShell 4 и не имеют PowerShellGet
модуль установлен. В результате Install-Module
функция недоступна.
У кого-нибудь есть предложения по использованию модуля PowerShellGet на VSTS-агенте? Обратите внимание, что, поскольку у меня нет прав администратора на этом компьютере, я не могу установить msi, которая устанавливает PowerShellGet для PowerShell 4.
1 ответ
Чтобы использовать PowerShellGet, необходимы два модуля PowerShell:
- PowerShellGet
- PackageManagement
Они доступны из коробки с PowerShell 5 или через установщик msi, доступный в галерее PowerShell.
Вместо того, чтобы развертывать эти модули через MSI, вы можете просто добавить их в свой репозиторий git (например, в папку с именем PsModules
). Вы сможете получить доступ к этим модулям на компьютере, на котором установлена либо 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