Используя 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 2

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