概覽
管理 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-Resource-Cleanup.ps1 -DeleteResources
自訂快照保留期
指定快照保留天數,以識別需要清理的舊快照:
.\Azure-Resource-Cleanup.ps1 -SnapshotRetentionDays 7 -DeleteResources

排除儲存體快照檢查
對於大型環境,略過儲存體帳戶 Blob 和檔案共用快照檢查:
.\Azure-Resource-Cleanup.ps1 -IncludeStorageSnapshots:$false
重要注意事項
在允許的虛擬網路上執行
請確認指令碼在允許的虛擬網路內執行。由於網路限制,某些儲存體帳戶可能會禁止存取容器或檔案快照。如果儲存體帳戶不支援刪除作業,嘗試清理這些資源時可能會遇到錯誤。
在開發/測試環境中測試
強烈建議在開發或測試環境中測試指令碼,然後再於生產環境中使用。這樣可以讓你檢視指令碼的行為、識別潛在問題,並驗證標記為清理的資源。
使用僅報告模式
對於生產環境,一律先在僅報告模式(不含-DeleteResources參數)下執行指令碼。這會提供孤立資源的詳細報告,讓你可以在啟動清理作業之前檢視和驗證標記的項目。
參數
此指令碼支援多個可自訂的參數:
| 參數 | 類型 | 預設值 | 描述 |
|---|---|---|---|
SnapshotRetentionDays | Integer | 3 | 快照的保留期(以天為單位)。超過此期限的快照將被標記為清理對象。 |
DeleteResources | Switch | $false | 啟用刪除已識別的資源。預設情況下,指令碼僅產生報告。 |
IncludeStorageSnapshots | Switch | $true | 包括 Blob 和檔案共用快照檢查。設定為$false即可排除這些檢查。 |
報告輸出
此指令碼會在附有時間戳記的資料夾中產生詳細報告,包括:
orphaned_nics.csvold_managed_snapshots.csvold_blob_snapshots.csvold_fileshare_snapshots.csvorphaned_disks.csvorphaned_public_ips.csvorphaned_nsgs.csvunused_availability_sets.csvempty_resource_groups.csvunused_vnets.csvsubnet_ip_usage.csvcleanup_log.txt(所執行作業的完整記錄)
最佳做法
- 從報告模式開始:一律在不含
-DeleteResources參數的情況下執行指令碼,以檢視標記的資源。 - 檢視報告:在啟動清理作業之前,仔細分析產生的 CSV 檔案。
- 設定保留期:依據組織原則自訂快照保留期。
- 在非生產環境中測試:在生產環境中使用之前,先在開發/測試環境中執行指令碼以驗證其行為。
- 在允許的虛擬網路上執行:請確認指令碼在允許的 vNet 內執行,以避免儲存體帳戶清理時出現網路相關錯誤。
範例工作流程
請依照以下工作流程安全地清理 Azure 資源:
- 在報告模式下執行指令碼:
.\Azure-Resource-Cleanup.ps1 - 檢視產生的報告,找出標記的資源。
- 放心地繼續使用清理模式:
.\Azure-Resource-Cleanup.ps1 -DeleteResources