-1

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

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

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

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

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

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

Start-Job -ScriptBlock { param($resourceGroupName, $deployment) Remove-AzResourceGroupDeployment -ResourceGroupName $resourceGroup -Name $deployment.DeploymentName
} -ArgumentList @($resourceGroup, $deployment) | 外空

4

2 回答 2

0

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

目前 Az 模块仅支持 v4 的 Azure Powershell 任务。由于 Azure PowerShell – 取代“AzureRM”的跨平台“Az”模块是一种趋势。

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

于 2019-08-19T06:06:28.960 回答
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.

于 2019-08-20T10:54:16.843 回答