用于删除未使用或孤立 Azure 资源的 Azure PowerShell 脚本

概述

管理 Azure 中未使用或孤立的资源会对云支出和运营效率产生重大影响。“Azure Resource Cleanup”工具是一个全面的 PowerShell 脚本,旨在帮助云管理员识别并删除未使用或孤立的 Azure 资源,确保成本优化和资源管理改善。

此脚本默认在安全、非破坏性的报告模式下运行,让管理员可以在启动清理操作之前查看孤立的资源。

你可以在 GitHub 上访问该项目:AzureOpsScripts – Resource Cleanup。



主要功能

Azure Resource Cleanup 脚本提供以下功能:

  • 孤立的 NIC:识别未附加到任何 VM 或端点的网络接口。
  • 旧的 Azure 磁盘快照:检测超出保留期的快照。
  • 存储帐户 Blob 快照:标记超过定义保留期的 Blob 快照。
  • 文件共享快照:识别超出保留限制的文件共享快照。
  • 孤立的托管磁盘:查找未附加到任何 VM 的磁盘。
  • 孤立的公共 IP:定位未使用的公共 IP 地址。
  • 未使用的网络安全组:识别未与任何资源关联的 NSG。
  • 未使用的可用性集:检测不再使用的可用性集。
  • 空资源组:标记没有活动资源的资源组。
  • 未使用的虚拟网络:突出显示可能未使用的虚拟网络(仅作突出显示,脚本不会删除它)。
  • 已保留但未使用的 IP 地址:识别已保留但未实际分配的 IP 地址。

要求

要使用 Azure Resource Cleanup 脚本,请确保满足以下前提条件:

  • PowerShell 版本:5.1 或更高版本
  • Az PowerShell 模块:使用以下命令安装:Install-Module -Name Az
  • Azure 帐户权限:确保具有查看和删除资源的适当权限。

用法

报告模式

在报告模式下运行脚本,以生成孤立资源的详细报告:

.\Azure-Resource-Cleanup.ps1  

删除未使用或孤立的 Azure 资源

清理模式

要删除已识别的资源,请使用清理模式:

.\Azure-Resource-Cleanup.ps1 -DeleteResources  

自定义快照保留期

指定快照保留天数,以识别需要清理的旧快照:

.\Azure-Resource-Cleanup.ps1 -SnapshotRetentionDays 7 -DeleteResources  

删除未使用或孤立的 Azure 资源

排除存储快照检查

对于大型环境,跳过存储帐户 Blob 和文件共享快照检查:

.\Azure-Resource-Cleanup.ps1 -IncludeStorageSnapshots:$false  


重要说明

在允许的虚拟网络上运行

确保脚本在允许的虚拟网络内执行。由于网络限制,某些存储帐户可能会禁止访问容器或文件快照。如果存储帐户不支持删除操作,尝试清理这些资源时可能会遇到错误。

在开发/测试环境中测试

强烈建议在开发或测试环境中测试脚本,然后再在生产环境中使用。这样可以让你查看脚本的行为、识别潜在问题,并验证标记为清理的资源。

使用仅报告模式

对于生产环境,始终先在仅报告模式(不带-DeleteResources参数)下运行脚本。这会提供孤立资源的详细报告,让你可以在启动清理操作之前查看和验证标记的项目。


参数

该脚本支持多个可自定义的参数:

参数类型默认值描述
SnapshotRetentionDaysInteger3快照的保留期(以天为单位)。超过此期限的快照将被标记为清理对象。
DeleteResourcesSwitch$false启用删除已识别的资源。默认情况下,脚本仅生成报告。
IncludeStorageSnapshotsSwitch$true包括 Blob 和文件共享快照检查。设置为$false可排除这些检查。

报告输出

该脚本在带时间戳的文件夹中生成详细报告,包括:

  • orphaned_nics.csv
  • old_managed_snapshots.csv
  • old_blob_snapshots.csv
  • old_fileshare_snapshots.csv
  • orphaned_disks.csv
  • orphaned_public_ips.csv
  • orphaned_nsgs.csv
  • unused_availability_sets.csv
  • empty_resource_groups.csv
  • unused_vnets.csv
  • subnet_ip_usage.csv
  • cleanup_log.txt(所执行操作的完整日志)输出 Excel 文件和日志记录

最佳实践

  1. 从报告模式开始:始终在不带-DeleteResources参数的情况下运行脚本,以查看标记的资源。
  2. 查看报告:在启动清理操作之前,仔细分析生成的 CSV 文件。
  3. 设置保留期:根据组织策略自定义快照保留期。
  4. 在非生产环境中测试:在生产环境中使用之前,先在开发/测试环境中运行脚本以验证其行为。
  5. 在允许的虚拟网络上运行:确保脚本在允许的 vNet 内执行,以避免存储帐户清理时出现网络相关错误。

示例工作流

按照以下工作流安全地清理 Azure 资源:

  1. 在报告模式下运行脚本:.\Azure-Resource-Cleanup.ps1
  2. 查看生成的报告,找出标记的资源。
  3. 放心地继续使用清理模式:.\Azure-Resource-Cleanup.ps1 -DeleteResources

参考资料

发表评论