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