当前,我正在研究将代码从AzureRM迁移到Az模块的重构方法,但是由于一件奇怪的事情,我被阻拦了一段时间。 我已经将所有命令更改为Az模块,并且所有操作在本地都能顺利进行。
但是当我尝试从Azure DevOps运行此Powershell脚本时,问题就开始了 我已经附上了一小部分代码,这是我代码的主要问题所在。在Azure中,DevOps代码可以成功运行,但不会执行此脚本块中的操作。将其作为后台作业(异步)运行非常重要,但是Az模块以某种方式导致了问题(或其他原因)。
以前(使用AzureRM模块),代码的同一部分工作得很吸引人。
我在本地pc和Azure DevOps代理上都具有相同的Az模块和PowerShell版本。
任何想法为什么脚本块不执行任何操作?
任何帮助表示赞赏! 干杯!
开始作业-ScriptBlock {
param($ resourceGroupName,$ deployment)
Remove-AzResourceGroupDeployment -ResourceGroupName $ resourceGroup -Name $ deployment.DeploymentName
} -ArgumentList @($ resourceGroup,$ deployment)|空空
答案 0 :(得分:0)
需要注意的一点是,您需要为支持Az模块的Azure PowerShell任务选择 4。*(预览版)。
目前,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
答案 1 :(得分:0)
我认为这与您的论点有关。 $ resourceGroupName和$ resourceGroup之间的命令中的arg,参数和变量用法不匹配
从您的用法看来,$ resourceGroup是一个字符串,$ deployment是一个数组。如果是这种情况,则您的args应该为-ArgumentList @($deployment),$resourceGroup
完整片段
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
。