用於刪除未使用或孤立 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

參考資料

發表留言