在部署中将VSTS用作PowerShell库

时间:2019-05-06 09:04:26

标签: powershell azure-devops

基于本文,我在VSTS项目中提供了PowerShell模块的提要,并将其用作私有库: https://roadtoalm.com/2017/05/02/using-vsts-package-management-as-a-private-powershell-gallery/

当我们在计算机上运行此程序时,一切都很好。 在发布过程中,我需要这些模块,因此第一个任务是注册该存储库(如果不存在),然后下载并安装每个模块的最新版本。 我的脚本的相关部分是:

Install-PackageProvider -Name NuGet -Confirm:$false -RequiredVersion 2.8.5.208
Get-PSRepository | Where-Object {$_.Name -eq "MyPrivateFeed" -or $_.SourceLocation -eq "https://myproject.pkgs.visualstudio.com/_packaging/MyPrivateFeed/nuget/v2"} | Unregister-PSRepository
Register-PSRepository -Name "MyPrivateFeed" -SourceLocation "https://myproject.pkgs.visualstudio.com/_packaging/MyPrivateFeed/nuget/v2" -InstallationPolicy Trusted
$PAT = $(System.AccessToken) | ConvertTo-SecureString -AsPlainText -Force
$VSTSCredentials = New-Object -TypeName PScredential("dummy", $PAT)
Find-Module -Name * -Repository MyPrivateFeed -Credential $VSTSCredentials | Install-Module -Credential $VSTSCredentials

该版本中的PowerShell任务失败,并显示以下信息:

WARNING: Unable to find module repositories.
PackageManagement\Register-PackageSource : The property 'Values' cannot be 
found on this object. Verify that the property exists.
At C:\Program 
Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:4173 
char:17
+ ...     $null = PackageManagement\Register-PackageSource @PSBoundParamete ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Microsoft.Power...erPackageSource 
   :RegisterPackageSource) [Register-PackageSource], Exception
    + FullyQualifiedErrorId : PropertyNotFoundStrict,Microsoft.PowerShell.Pack 
   ageManagement.Cmdlets.RegisterPackageSource 

当我在ISE /控制台上运行同一脚本时,相同的脚本可以在同一台计算机上运行(当然用实际的PAT替换了令牌) 任何人都知道这里发生了什么吗?

我尝试将-PackageManagementProvider NuGet添加到Register-PSRepository,但这没有帮助

1 个答案:

答案 0 :(得分:0)

我偶尔会看到“ Register-PackageSource:在此对象上找不到属性'Values'。请验证该属性是否存在。”当前没有为“ PowerShellGet”程序包提供程序注册的程序包源时,尝试从PowerShellGet模块运行“ Register-PSRepository”命令(或从从属PackageManagement模块中运行“ Register-PackageSource”命令)时发生错误默认的“ PSGallery”)。

当当前用户的配置文件下的“%USERPROFILE%\ AppData \ Local \ Microsoft \ Windows \ PowerShell \ PowerShellGet \ PSRepositories.xml”下存在一个空文件时,似乎会发生这种情况。我不确定是什么原因导致创建空文件,但是直到删除空文件,甚至“ Register-PSRepository -Default”命令都不会成功。

删除文件确实可以解决错误,并允许PowerShellGet软件包源重新注册。