在Azure DevOps Release Pipeline中使用Az模块

问题描述 投票:4回答:3

我想在Azure DevOps Release Pipeline中使用Azure PowerShell Module(又名Az模块)。但是,现有的PowerShell选项似乎不起作用。我尝试了各种各样的东西,但安装新的Az模块只会带来大量的错误,包括Az and AzureRM modules cannot be imported in the same session or used in the same script or runbook.

常规PowerShell任务没有内置任何azure模块。而Azure PowerShell任务使用已退役的Azure RM PowerShell module(即仍然支持它,但不会添加任何新功能)。

上面的错误很可能是因为Azure PowerShell任务启动时,它在运行我的脚本之前执行以下操作:

2019-01-13T13:34:14.5416432Z ==============================================================================
2019-01-13T13:34:14.5416555Z Task         : Azure PowerShell
2019-01-13T13:34:14.5416623Z Description  : Run a PowerShell script within an Azure environment
2019-01-13T13:34:14.5416705Z Version      : 3.1.18
2019-01-13T13:34:14.5416762Z Author       : Microsoft Corporation
2019-01-13T13:34:14.5416831Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613749)
2019-01-13T13:34:14.5416969Z ==============================================================================
2019-01-13T13:34:20.3546127Z ##[command]Import-Module -Name C:\Modules\AzureRm_6.7.0\AzureRM\6.7.0\AzureRM.psd1 -Global
2019-01-13T13:34:58.4365259Z ##[command]Clear-AzureRmContext -Scope Process
2019-01-13T13:34:59.2732327Z ##[command]Disable-AzureRmContextAutosave -ErrorAction SilentlyContinue
2019-01-13T13:35:00.1691359Z ##[command]Add-AzureRMAccount -ServicePrincipal -Tenant *** -Credential System.Management.Automation.PSCredential -Environment AzureCloud @processScope
2019-01-13T13:35:01.5702545Z ##[command] Select-AzureRMSubscription -SubscriptionId d5eaaba3-2968-456a-98a4-e53e961fc896 -TenantId ***
2019-01-13T13:35:02.1592660Z ##[command]& 'D:\a\r1\a\ws-build\tools\install-dependencies.ps1' 

当然,在一个新项目中,我不想创建具有不再高级模块的PowerShell脚本。

并且考虑未来,即使我确实设法通过这个,我将不得不以某种方式验证Azure,现有的Azure DevOps UI为我做了,我还不知道如何使用Az模块做到这一点。 Add a subscription into the Azure context

谷歌搜索似乎没有帮助,因为大多数信息仍然与弃用的AzureRM模块有关。所以...总之。

如何在Azure DevOps版本管道中使用Azure(Az)Powershell模块?

azure-devops azure-powershell
3个回答
1
投票

该任务依赖于特定模块。如果您想使用该任务,除了等待它们更新之外,您无法做任何事情。

如果你愿意,你可以分叉task repository并自己更新。或者,您可以编写自己的Azure身份验证逻辑。

您可以使用反向别名(Az - > AzureRM)编写脚本,而不是Az模块(AzureRM - > Az)提供的别名,因此您可以使用将支持的cmdlet名称编写脚本,从而将来 - 证明自己。


1
投票

作为一种解决方法,我一直在使用Hosted VS2017代理池,因为这些已经准备好使用Az模块


0
投票

我采用了黑客路径,但我最终创建了一个虚拟AzureRM模块,以便在我的自托管代理上安装,然后在我的代理上修改Azure PowerShell任务的脚本以加载AzureRM别名。最终结果是我在代理上安装了Az,并且可以在Azure PowerShell任务的版本3或4上运行AzureRM样式cmdlet名称和/或Az样式cmdlet名称。这允许我在构建代理上切换到Az,并允许团队逐步迁移其脚本以使用Az cmdlet名称。

我的解决方案是在Github:https://github.com/brendonthiede/dummy-AzureRM

需要注意的是,每次更新任务时,这可能需要对代理上的Azure PowerShell脚本进行“重新修改”。


0
投票

尝试使用Azure Powershell Task版本4. *(预览)。此功能仍处于预览状态。与自托管代理一起使用。这将很快发布给Microsoft Hosted代理。

参考 - https://developercommunity.visualstudio.com/content/problem/434058/unable-to-use-new-az-module-in-azure-devops.html

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.