首页 > 解决方案 > PowerShell Find-Package/Save-Package 需要私有 NuGet 存储库的凭据

问题描述

我无法将在我的 Windows 系统上正确运行的 PowerShell 脚本移植到 Docker Windows 容器。我尽力在 Dockerfile 中复制设置,并且可以确认 PowerShell (5.1) 和 PackageManagement 模块 (1.4.7) 版本是相同的。

我已经设置了一个包含凭据和 apikey 的私有 NuGet 源,并确认两者的内容C:\Users\me\AppData\Roaming\NuGet\NuGet.ConfigC:\Users\ContainerAdministrator\AppData\Roaming\NuGet\NuGet.Config相同的:

  nuget sources Add -Name nuget-private -Source https://artifactory/artifactory/api/nuget/private_nuget -Username <USERNAME> -Password <ENCRYPTED_PASSWORD>
  nuget setapikey -Source nuget-private <USERNAME>:<APIKEY>

在包括 Docker 在内的两个系统上,命令nuget list -Source nuget-private返回预期内容而不需要凭据。

但仅在 Docker 上,遵循 PowerShell 命令只是失败,需要凭据

Find-Package -Name "MyAssembly" -Source nuget-private

添加了尽可能适当-Credential $creds的工作。

因为我想避免在我的 PowerShell 脚本中添加凭据逻辑,所以我有兴趣了解为什么存储的凭据C:\Users\ContainerAdministrator\AppData\Roaming\NuGet\NuGet.Config不会被 cmdlet 自动加载和使用Save-Package- 而它在我的 Windows 工作站中是这样,我不喜欢这样的“魔法”差距。

顺便说一句,在这两种情况下保持相同的 PowerShell 命令调用而无需凭据的任何解决方法都会有所帮助 - 例如,环境变量......

标签: powershellnugetpackage-managers

解决方案


推荐阅读