【问题标题】:Issues with migration AzureRm to Az将 AzureRm 迁移到 Az 的问题
【发布时间】:2019-08-16 13:59:46
【问题描述】:

目前,我正在重构代码以从 AzureRM 迁移到 Az 模块,但我因一件奇怪的事情被阻止了一段时间。 我已经将所有命令更改为 Az 模块,并且在本地一切正常。

但是当我尝试从 Azure DevOps 运行这个 powershell 脚本时,问题就开始了 我附上了一小部分代码,这是我的代码的主要问题点。在 Azure 中,DevOps 代码成功运行,但它不执行此脚本块中的操作。将其作为后台作业(异步)运行非常重要,但 Az 模块会以某种方式导致问题(或者可能是其他问题)。

以前(使用 AzureRM 模块)相同的代码部分就像一个魅力。

我在本地 pc 和 Azure DevOps 代理上都有相同的 Az 模块和 PowerShell 版本。

任何想法为什么脚本块不执行任何操作?

任何帮助表示赞赏! 干杯!

开始工作 -ScriptBlock { 参数($resourceGroupName,$deployment) 删除-AzResourceGroupDeployment -ResourceGroupName $resourceGroup -Name $deployment.DeploymentName
} -ArgumentList @($resourceGroup, $deployment) |外空

【问题讨论】:

  • 嗨休林。可悲的是没有。我理解,可能是我提供的信息太少了,但我不能给你更多,我只能试着解释一下。在创建这篇文章之前,我尝试了 Bevan 的解决方案,但仍然没有成功。可能是我在 Azure DevOps 代理上同时安装了 Az 模块和 AzureRM 的问题吗?但我认为这不应该是我执行命令的问题: Remove-AzResourceGroupDeployment -ResourceGroupName $resourceGroup -Name $deployment.DeploymentName without script block,它运行良好(所以 Az 模块工作)。

标签: azure powershell azure-devops azure-rm az


【解决方案1】:

需要注意的一点是,您需要为支持 Az Module 的 Azure PowerShell 任务选择 4.*(preview) 版本

现在 Az 模块是 only support with v4 of the Azure Powershell task。 由于 Azure PowerShell – 跨平台“Az”模块取代“AzureRM”是一种趋势。

您也可以在 GitHub 中找到 V4 Azure Powershell 任务的开源代码:https://github.com/microsoft/azure-pipelines-tasks/tree/master/Tasks/AzurePowerShellV4

【讨论】:

  • 嗨,林休!感谢您的帮助!我已经为安装了 Az 模块的 Azure Powershell 任务使用了 4.*(预览版)版本。它显示异步作业已启动并等待它们完成然后成功删除它们,模块似乎工作但实际上从 Azure DevOps 代理运行时仍然没有任何反应
【解决方案2】:

我认为这与你的论点有关。 $resourceGroupName 和 $resourceGroup 之间的命令中的 arg、参数和变量用法不匹配

从您的用法看来,$resourceGroup 似乎是一个字符串,而 $deployment 是一个数组。如果是这种情况,那么您的参数应该是-ArgumentList @($deployment),$resourceGroup

完整的sn-p Start-Job -ScriptBlock { param($deployment, $resourceGroup) Remove-AzResourceGroupDeployment -ResourceGroupName $resourceGroup -Name $deployment.DeploymentName } -ArgumentList @($deployment),$resourceGroup | Out-Null

虽然提供的信息量不是很大。我只是尝试运行Remove-AzResourceGroupDeployment 命令而不将作业作为初始测试。这将告诉您它是 Az 模块还是您的工作。另外,我过去在托管代理上加载模块时遇到过问题,因此请尝试install-module Az.Resources -force -allowclobber

【讨论】:

  • 感谢您的回复和帮助 Bevan,我尝试了上述所有方法,但仍然没有成功。但我也有这种感觉,那个问题隐藏在争论中。资源组是一个字符串。部署变量是一个对象。它具有长度、部署名称等值。
  • 您可以尝试完全跳过参数:Start-Job -ScriptBlock {Remove-AzResourceGroupDeployment -ResourceGroupName $using:resourceGroup -Name $using:deployment.DeploymentName }。也可以尝试将您的脚本放入变量中并使用invoke-command $command -asjob 调用它
猜你喜欢
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 2017-01-26
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多