You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

识别并删除重复Azure Hybrid Worker,保留最新注册实例

解决Azure Hybrid Worker重复实例的清理方案

核心思路

按服务器FQDN($SHRW.WorkerName)分组,每组内按RegisteredDateTime降序排序,保留最新注册的实例,其余标记为待删除项,批量执行删除操作。

具体实现步骤

  1. 按FQDN分组Hybrid Worker
    将已获取的所有Hybrid Worker列表按服务器FQDN分组,方便后续处理重复项:
# 按WorkerName(FQDN)分组
$groupedWorkers = $BigListOfSHRWGs | Group-Object -Property WorkerName
  1. 筛选待删除的重复实例
    遍历每个分组,对组内实例按注册时间从新到旧排序,跳过第一个(最新实例),剩余的就是需要清理的重复项:
$workersToDelete = foreach ($group in $groupedWorkers) {
    # 按注册时间降序排序,确保最新实例排在首位
    $sortedWorkers = $group.Group | Sort-Object -Property RegisteredDateTime -Descending
    # 跳过第一个保留实例,收集其余重复项
    $sortedWorkers | Select-Object -Skip 1
}
  1. 执行删除操作
    根据你使用的工具选择对应的删除方式:

方式一:使用Azure PowerShell模块(Az.Automation)

# 替换为你的资源组和自动化账户名称
$resourceGroupName = "YourResourceGroup"
$automationAccountName = "YourAutomationAccount"

foreach ($worker in $workersToDelete) {
    # 从Id中提取Worker的唯一名称($SHRW.Id.split("/")[10])
    $workerUniqueName = $worker.Id.Split("/")[10]
    
    # 执行删除,-Force参数跳过确认提示
    Remove-AzAutomationHybridRunbookWorker `
        -ResourceGroupName $resourceGroupName `
        -AutomationAccountName $automationAccountName `
        -Name $workerUniqueName `
        -Force
    
    Write-Host "已清理重复实例: $($worker.WorkerName) - $workerUniqueName"
}

方式二:调用Azure Management API

如果你之前是通过API获取的Hybrid Worker数据,可以直接用API执行删除:

# 确保已获取有效的Azure访问令牌
$accessToken = "YourValidAccessToken"
$apiBaseUrl = "https://management.azure.com"

foreach ($worker in $workersToDelete) {
    # 从Worker的Id中提取API路径
    $workerApiPath = $worker.Id.Substring($worker.Id.IndexOf("/subscriptions/"))
    $deleteApiUrl = "$apiBaseUrl$workerApiPath`?api-version=2023-11-01"
    
    # 发送删除请求
    Invoke-RestMethod -Uri $deleteApiUrl -Method Delete -Headers @{
        Authorization = "Bearer $accessToken"
        "Content-Type" = "application/json"
    }
    
    Write-Host "已通过API清理重复实例: $($worker.WorkerName) - $($worker.Id.Split("/")[10])"
}

关键注意事项

  • 先验证再删除:建议先将删除代码替换为Write-Host输出待删除实例信息,确认无误后再执行实际删除操作,避免误删有效实例。
  • 权限要求:执行脚本的账户需要拥有Microsoft.Automation/automationAccounts/hybridRunbookWorkers/delete权限。
  • 可选过滤条件:如果只想清理断开连接(Disconnected)的重复项,可以在分组前添加过滤:
    $filteredWorkers = $BigListOfSHRWGs | Where-Object { $_.ConnectionState -eq "Disconnected" }
    $groupedWorkers = $filteredWorkers | Group-Object -Property WorkerName
    

内容的提问来源于stack exchange,提问作者Bombbe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 07:42:32