0

对不起,很长的帖子,但我真的很困惑,希望有人能提供帮助。我来来回回了很多次,我遇到了很多与 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 模块的正确方法是什么

谢谢

4

1 回答 1

1

我注意到您已将 nuget 包推送到 Azure Artifacts。

您可以将 Powershell 任务添加到管道并运行以下脚本:

注册-PSRepository:

 $patToken = "PAT" | ConvertTo-SecureString -AsPlainText -Force
    
 $credsAzureDevopsServices = New-Object System.Management.Automation.PSCredential("email address", $patToken)
    
 Register-PSRepository -Name "PowershellAzureDevopsServices" -SourceLocation "https://pkgs.dev.azure.com/<org_name>/<project_name>/_packaging/<feed_name>/nuget/v2" -PublishLocation "https://pkgs.dev.azure.com/<org_name>/<project_name>/_packaging/<feed_name>/nuget/v2" -InstallationPolicy Trusted -Credential $credsAzureDevopsServices

然后就可以注册成功了。

在此处输入图像描述

在此处输入图像描述

注意:我建议您可以创建a Project Scope feed. 或者你可能会遇到一些问题。

然后您可以运行以下脚本来安装模块。

Find-Module -Repository PowershellAzureDevopsServices

Install-Module -Name Get-Hello -Repository PowershellAzureDevopsServices

如需更多详细信息,您可以参考本指导文件

于 2020-07-29T07:22:25.597 回答