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

能否删除Azure Automation中已完成的作业日志?

如何删除Azure Automation中已完成的作业历史记录?

确实,Azure Automation的GUI界面里确实没有提供直接删除作业历史的选项,但我们完全可以通过PowerShell、Azure CLI或者创建自动清理的Runbook来搞定这个需求,下面给你详细讲几种方法:

方法1:使用PowerShell手动删除作业

如果你只是偶尔清理一次,用PowerShell是最直接的方式:

  1. 首先连接到你的Azure账户(如果还没连接的话):
Connect-AzAccount
  1. 替换成你的资源组和自动化账户名称,筛选出所有已完成的作业并删除:
$resourceGroupName = "你的资源组名称"
$automationAccountName = "你的自动化账户名称"

# 获取所有状态为「Completed」的作业,也可以根据需要改成Failed、Stopped等状态
$completedJobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName | Where-Object { $_.Status -eq 'Completed' }

# 循环删除每个作业
foreach ($job in $completedJobs) {
    Remove-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName -Id $job.JobId
    Write-Host "已删除作业: $($job.JobId)"
}

如果只想删除指定时间之前的已完成作业(比如30天前),可以加个时间筛选条件:

$cutoffDate = (Get-Date).AddDays(-30)
$oldJobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName | Where-Object { $_.Status -eq 'Completed' -and $_.EndTime -lt $cutoffDate }

方法2:使用Azure CLI删除作业

如果你更习惯用CLI,也可以用Azure CLI来批量删除:

  1. 先登录Azure:
az login
  1. 批量删除已完成的作业:
az automation job list --resource-group "你的资源组名称" --automation-account-name "你的自动化账户名称" --filter "status eq 'Completed'" --query "[].id" -o tsv | xargs -I {} az automation job delete --resource-group "你的资源组名称" --automation-account-name "你的自动化账户名称" --job-id {}

同样,要删除指定时间之前的作业,可以调整--filter参数(下面示例是删除30天前的已完成作业):

az automation job list --resource-group "你的资源组名称" --automation-account-name "你的自动化账户名称" --filter "status eq 'Completed' and endTime lt '$(date -d "30 days ago" --utc +%Y-%m-%dT%H:%M:%SZ)'" --query "[].id" -o tsv | xargs -I {} az automation job delete --resource-group "你的资源组名称" --automation-account-name "你的自动化账户名称" --job-id {}

方法3:创建自动清理的Runbook(推荐长期使用)

如果需要定期自动清理作业历史,最省心的方式是做一个PowerShell Runbook,然后设置定时调度:

下面是一个可直接使用的Runbook示例代码:

param(
    [Parameter(Mandatory=$true)]
    [int]$RetentionDays = 30,
    [Parameter(Mandatory=$true)]
    [string]$AutomationAccountName,
    [Parameter(Mandatory=$true)]
    [string]$ResourceGroupName
)

$cutoffDate = (Get-Date).AddDays(-$RetentionDays)
Write-Output "开始清理$RetentionDays天前的已完成作业..."

$completedJobs = Get-AzAutomationJob -ResourceGroupName $ResourceGroupName -AutomationAccountName $AutomationAccountName | Where-Object { $_.Status -eq 'Completed' -and $_.EndTime -lt $cutoffDate }

if ($completedJobs.Count -eq 0) {
    Write-Output "没有符合条件的作业需要删除。"
    exit
}

foreach ($job in $completedJobs) {
    try {
        Remove-AzAutomationJob -ResourceGroupName $ResourceGroupName -AutomationAccountName $AutomationAccountName -Id $job.JobId -ErrorAction Stop
        Write-Output "成功删除作业ID: $($job.JobId)"
    }
    catch {
        Write-Error "删除作业ID $($job.JobId) 失败: $_"
    }
}

Write-Output "清理完成,共删除$($completedJobs.Count)个作业。"

配置步骤:

  1. 在你的Azure Automation账户中创建一个新的PowerShell Runbook,粘贴上面的代码
  2. 给自动化账户分配足够的权限(比如在资源组上分配Contributor角色)
  3. 设置一个调度(比如每周日凌晨运行),并传入对应的参数(保留天数、账户名称、资源组名称)

⚠️ 注意:作业删除后无法恢复,所以操作前一定要确认筛选条件正确,建议先测试删除少量作业验证效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:01:38