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

如何获取Azure资源组的创建时间?满足自动化脚本需求

确实挺让人头疼的——Get-AzureRmResourceGroup(现在更推荐用Az模块的Get-AzResourceGroup)返回的对象里确实没有直接的创建时间戳属性。不过别担心,我们可以通过查询Azure的活动日志来获取这个信息,因为资源组的创建操作会被记录在活动日志中,完全可以满足你自动化脚本的需求。

1. 获取单个资源组的创建时间

如果你只需要查询特定资源组的创建时间,可以用以下PowerShell命令(以Az模块为例,AzureRm模块的话把Get-AzLog换成Get-AzureRmLog即可):

# 替换为你的目标资源组名称
$targetRgName = "eastus2-something-rg"

# 查询活动日志,筛选资源组的创建/写入操作,取最早的记录即为创建时间
$creationEvent = Get-AzLog -ResourceGroupName $targetRgName -StartTime (Get-Date).AddDays(-90) |
    Where-Object { $_.OperationName.Value -eq "Microsoft.Resources/subscriptions/resourcegroups/write" } |
    Sort-Object EventTimestamp -Ascending |
    Select-Object -First 1

# 输出结果
Write-Host "资源组 $targetRgName 的创建时间: $($creationEvent.EventTimestamp)"

2. 批量获取所有资源组的创建时间

如果要生成全量资源组的创建时间报告,适合用循环批量处理:

# 获取当前订阅下的所有资源组
$allResourceGroups = Get-AzResourceGroup

# 遍历每个资源组,查询并整理创建时间信息
$rgCreationReports = foreach ($rg in $allResourceGroups) {
    $creationEvent = Get-AzLog -ResourceGroupName $rg.ResourceGroupName -StartTime (Get-Date).AddDays(-90) |
        Where-Object { $_.OperationName.Value -eq "Microsoft.Resources/subscriptions/resourcegroups/write" } |
        Sort-Object EventTimestamp -Ascending |
        Select-Object -First 1

    # 构造自定义对象存储结果,处理日志过期的情况
    [PSCustomObject]@{
        ResourceGroupName = $rg.ResourceGroupName
        Location          = $rg.Location
        CreationTime      = if ($creationEvent) { $creationEvent.EventTimestamp } else { "创建超过90天,日志已过期" }
    }
}

# 输出格式化的报告
$rgCreationReports | Format-Table -AutoSize

重要注意事项

  • 活动日志保留限制:Azure活动日志默认只保留90天,如果你的资源组创建时间超过90天,默认查询会返回空结果。这种情况下,需要提前配置将活动日志导出到存储账户或Log Analytics工作区,从这些持久化存储中查询历史日志。
  • 模块版本建议:尽量使用Az模块(可通过Install-Module -Name Az -AllowClobber -Scope CurrentUser安装),AzureRm模块已被官方弃用,不再更新维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:06:09