Использование 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
Другие вопросы по тегам