对不起,很长的帖子,但我真的很困惑,希望有人能提供帮助。我来来回回了很多次,我遇到了很多与 PowerShell 存储库和 Azure DevOps 代理有关的问题。
最终目标是将某些 PowerShell 模块的最新版本安装为管道的一部分。
我编写了各种 PowerShell 模块,将它们打包为 NuGet 并将它们推送到不同的存储库(Azure DevOps 工件、SonaType Nexus OSS)
然后我需要将这些模块安装为其他管道的一部分。由于 Azure DevOps 中没有内置方法来处理 PowerShell 存储库和导入模块,我编写了一个脚本,将存储库位置、名称和凭据作为参数,验证它是否已注册并安装模块。当我在任何机器上运行此脚本时,它都能完美运行当此脚本是任何管道上的 PowerShell 任务时 - 它有各种故障,总是使用 PackageManagement 中的 cmdlet
我认为这是因为代理使用 -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.
作为我脚本的一部分,我正在运行这些 cmdlet 以确保所有必需的模块都在那里:
$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.
我花了几个小时在这上面。从 3rd 方存储库(基于 NuGet)安装 PS 模块的正确方法是什么
谢谢