如何用PowerShell提取Azure近1个月活动日志中已删除的资源?
关于提取Azure过去1个月已删除资源的命令说明
你的原命令存在两个核心问题,无法保证返回全部已删除资源:
OperationName的过滤逻辑错误
Get-AzLog返回的日志条目中,OperationName是包含Value和LocalizedValue的对象,并非直接字符串。直接对$_.OperationName调用StartsWith("Delete")会导致判断失效,因为无法对对象执行字符串匹配操作。过滤范围过窄
多数Azure资源的删除操作,其OperationName.Value格式为{资源提供商}/{资源类型}/delete(例如Microsoft.Storage/storageAccounts/delete),并不会以"Delete"开头;只有LocalizedValue会显示为类似"Delete storage account"的本地化名称。
修正后的命令
要更准确地获取所有删除操作的日志,可使用以下两种过滤方式:
方式1:基于操作名称的Value属性匹配
$StartTime = (Get-Date).AddMonths(-1) $EndTime = Get-Date Get-AzLog -StartTime $StartTime -EndTime $EndTime | Where-Object { $_.OperationName.Value -like "*delete" }
方式2:基于本地化操作名称匹配
$StartTime = (Get-Date).AddMonths(-1) $EndTime = Get-Date Get-AzLog -StartTime $StartTime -EndTime $EndTime | Where-Object { $_.OperationName.LocalizedValue -like "Delete*" }
补充说明
- 活动日志(Get-AzLog获取的日志)默认保留90天,提取过去1个月的日志完全符合保留范围。
- 若需获取软删除状态的资源(而非仅删除操作记录),可使用
Get-AzResource -IncludeDeleted,但该命令仅支持部分具备软删除特性的资源类型(如存储账户、SQL数据库等),无法覆盖所有资源。
内容的提问来源于stack exchange,提问作者Deepthi S
相关产品推荐
相关产品推荐

