如何使用 Azure DevOps 和 PowerShell 删除 Azure VM 上失败的扩展运行?

How to delete the failed runs of extensions on Azure VM using Azure DevOps and PowerShell?

我想使用 Azure DevOps 和 PowerShell 删除 Azure VM 上失败的扩展运行。并根据删除状态要执行另一个 ADO 管道。

您可以将 azure powershell task 添加到 运行 Az Powershell 脚本以删除扩展。

为了在您的管道中使用 Azure powershel 任务。您需要创建 Azure 资源管理器服务连接以连接到您的 Azure 订阅。例如,参见

注意:您需要确保在 Azure 资源管理器服务连接中使用的服务主体具有正确的角色分配以删除 vm 扩展。

然后您可以 运行 在 az powershell 命令下检查您的扩展的状态并删除它们。

  • 获取安装在 VM 上的所有扩展:

    Get-AzVMExtension -ResourceGroupName "ResourceGroup11" -VMName "VirtualMachine22"

  • 获取扩展的属性:

    Get-AzVMExtension -ResourceGroupName "ResourceGroup11" -VMName "VirtualMachine22" -Name "CustomScriptExtension"

  • 从虚拟机中删除扩展:

    Remove-AzVMExtension -ResourceGroupName "ResourceGroup11" -Name "ContosoTest" -VMName "VirtualMachine22"

根据删除状态触发另一个ADO 管道。您可以在上面的 azure powershell 中调用 Runs - Run Pipeline rest api 来触发另一个管道。请参阅以下示例:

steps:
- task: AzurePowerShell@5
  displayName: 'Azure PowerShell script: InlineScript copy'
  inputs:
    azureSubscription: 'Microsoft-Azure'
    ScriptType: InlineScript
    Inline: |
     #remove extension
     $result = Remove-AzVMExtension -ResourceGroupName "ResourceGroup11" -Name "ContosoTest" -VMName "VirtualMachine22"
     
     if($result.IsSuccessStatusCode){
           
          $url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/pipelines/{pipelineId}/runs?api-version=6.1-preview.1"
          #invoke rest api to trigger another ado pipeline
          Invoke-RestMethod -Uri $url -Headers @{authorization = "Bearer $(system.accesstoken)"} -ContentType "application/json" -Method Post
        
     }
     
    azurePowerShellVersion: LatestVersion