代码之家  ›  专栏  ›  技术社区  ›  Colin Mackay

在azure devops发布管道中使用az模块

  •  3
  • Colin Mackay  · 技术社区  · 6 年前

    我想用 Azure PowerShell Module (又名az模块)在azure devops发布管道中。然而,现有的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 DavopUI为我做了这件事,我还没有看到如何用AZ模块来实现这一点。 Add a subscription into the Azure context

    google似乎没有帮助,因为大多数信息仍然与已弃用的azurerm模块相关。所以…综上所述。

    如何在azure devops发布管道中使用azure(az)powershell模块?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Daniel Mann    6 年前

    该任务依赖于特定模块。如果你想使用这个任务,除了等待他们更新之外,你不能做任何事情。

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

    您可以用反向别名(AZ->AzureRM)编写脚本,而不是由Az模块(AZurrm & Gt;Az)提供的别名,这样您就可以使用支持的CMDLE名称编写脚本,从而将来验证自己。

        2
  •  0
  •   Dexter Lakin    6 年前

    作为一种解决方法,我一直在使用托管的vs2017代理池,因为它们已经准备好使用az模块

        3
  •  0
  •   Brendon    5 年前

    我走黑客路线,但最终创建了一个虚拟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脚本。