如何通过Azure门户或PowerShell获取3个月未使用资源列表?
获取闲置3个月的Azure未使用资源列表
一、使用PowerShell获取列表
首先确保已安装Az模块,未安装可运行:Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
- 连接Azure账户并切换到目标订阅:
Connect-AzAccount Set-AzContext -Subscription "<订阅ID或订阅名称>"
- 定义闲置时间阈值(3个月前),按资源类型筛选闲置资源:
$inactiveThreshold = (Get-Date).AddMonths(-3) # 筛选关机/已解除分配超过3个月的虚拟机 $inactiveVMs = Get-AzVM -Status | Where-Object { $_.PowerState -match 'deallocated|stopped' -and $_.Statuses[1].Time -lt $inactiveThreshold } | Select-Object Name, ResourceGroupName, PowerState, @{Name='LastStateChange'; Expression={$_.Statuses[1].Time}} # 筛选超过3个月未访问的Blob容器(需存储账户启用访问日志) $inactiveBlobContainers = @() Get-AzStorageAccount | ForEach-Object { $ctx = $_.Context Get-AzStorageContainer -Context $ctx | ForEach-Object { $accessPolicy = Get-AzStorageContainerStoredAccessPolicy -Context $ctx -Container $_.Name if ($accessPolicy.LastAccessTime -and $accessPolicy.LastAccessTime -lt $inactiveThreshold) { $inactiveBlobContainers += [PSCustomObject]@{ StorageAccountName = $_.StorageAccountName ContainerName = $_.Name LastAccessTime = $accessPolicy.LastAccessTime } } } } # 筛选超过3个月未修改的App Service $inactiveAppServices = Get-AzWebApp | Where-Object { $_.LastModifiedTime -lt $inactiveThreshold } | Select-Object Name, ResourceGroupName, LastModifiedTime
- 将结果导出到CSV文件:
$inactiveVMs | Export-Csv -Path "./InactiveVMs.csv" -NoTypeInformation $inactiveBlobContainers | Export-Csv -Path "./InactiveBlobContainers.csv" -NoTypeInformation $inactiveAppServices | Export-Csv -Path "./InactiveAppServices.csv" -NoTypeInformation
注意:不同资源类型的闲置判断逻辑需调整,比如数据库可依据
LastBackupTime筛选,需结合业务场景修改。
二、通过Azure门户导出详情
成本管理视图导出
- 进入Azure门户「成本管理 + 计费」服务
- 左侧菜单选择「成本分析」,切换到「资源」视图
- 添加筛选器:时间范围设为「过去3个月」,筛选目标资源类型(如虚拟机、存储账户),再添加「利用率=0」的筛选条件
- 点击页面顶部「导出」按钮,选择CSV/Excel格式后下载文件
资源列表直接导出
- 进入「所有资源」页面,点击「添加列」,新增「最后修改时间」「电源状态」(针对VM)等字段
- 设置筛选器:「最后修改时间」小于「3个月前」,或「电源状态」为「已停止/已解除分配」
- 选中筛选后的资源,点击顶部「导出」按钮选择格式完成导出
内容的提问来源于stack exchange,提问作者Suri007
相关产品推荐
相关产品推荐

