Извините за очень длинный пост, но я действительно застрял и надеюсь, что кто-то может помочь. Я так много раз перебирался и сталкивался с множеством проблем со всем, что связано с репозиториями PowerShell и агентами Azure DevOps.
Конечная цель - установить последние версии некоторых модулей PowerShell как часть конвейера.
Я пишу различные модули PowerShell, упаковываю их как NuGets и отправляю в разные репозитории (артефакты Azure DevOps, SonaType Nexus OSS)
Затем мне нужно установить эти модули как часть других конвейеров. Поскольку в Azure DevOps нет встроенного способа обработки репозиториев PowerShell и модулей импорта, я написал сценарий, который принимает расположение, имя и учетные данные репозитория в качестве параметров, проверяет его регистрацию и устанавливает модуль. Когда я запускаю этот сценарий на ЛЮБОЙ машине, он отлично работает.Когда этот сценарий является задачей PowerShell на любом конвейере, он имеет различные сбои, всегда с командлетами из PackageManagement.
Я думал, что это потому, что агент запускает его с -NoProfile, но у меня это работает, когда я запускаю сценарий точно так, как его запускает агент - powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command. 'C: .....'
Я также попытался запустить задачу cmd и вызвать PowerShell для запуска скрипта, но получил те же результаты.
Проблемы, с которыми я сталкиваюсь:
Get-PSRepository НИЧЕГО не возвращает. Даже PSGallery
Когда я пытаюсь зарегистрировать репозиторий (используя Register-PSRepository или Register-PackageSource), он выдает ошибку:
PackageManagement\Register-PackageSource : The property 'Values' cannot be found on this object. Verify that the property exists.
как часть моего скрипта я запускаю эти командлеты, чтобы убедиться, что все необходимые модули есть:
$webclient=New-Object System.Net.WebClient; $webclient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials; [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.208 -Force -Confirm:$false -Verbose; Install-Module PowerShellGet -RequiredVersion 2.2.4 -SkipPublisherCheck -Verbose -Force;
Другая возникающая ошибка:
PackageManagement\Get-PackageSource : Unable to find repository 'PSGallery'. Use Get-PSRepository to see all available repositories.
Я потратил на это часы. Как правильно установить модули PS из стороннего репозитория (на основе NuGet)
Спасибо