Buy Me a Coffee

Azure資源快速清理:PowerShell腳本大法好!


嘿,各位雲端冒險家們!今天咱們來聊聊一個既燒錢又燒腦的話題:如何在Azure上快速刪除一堆不要的資源。你是不是也曾經為了測試個新功能,結果一個不小心就在Azure上開了一大堆服務,最後帳單來了才驚覺:「我的錢包君啊,對不起!」

別擔心,今天我就要教你一招絕世武功:「PowerShell一鍵清雲」大法!跟著我來,保證讓你的Azure帳戶瘦身成功,錢包君對你豎起大拇指!

為什麼要學這招?

在開始之前,讓我們先來聊聊為什麼要學這招「PowerShell一鍵清雲」大法:

  1. 省時間:手動刪除每個資源?別鬧了,生命短暫,何必浪費在點點點上。
  2. 省錢:忘記刪除某個資源可能讓你的信用卡哭泣。自動化腳本確保你不會漏掉任何角落。
  3. 減少錯誤:人為操作總是容易出錯,特別是在你累得雙眼冒金星的時候。
  4. 可重複使用:寫一次腳本,以後隨時都能用,多方便啊!
  5. 炫技加分:在同事面前露一手,讓他們知道你不是只會點點點的菜鳥。

好了,廢話不多說,讓我們直接進入主題吧!

PowerShell腳本大揭秘

首先,讓我們來看看這個神奇的PowerShell腳本長什麼樣:

# 使用設備代碼進行身份驗證
Connect-AzAccount -UseDeviceAuthentication

# 設置變量
$resourceGroupName = "your-resource-group-name"
$aksClusterName = "your-aks-cluster-name"
$acrName = "your-acr-name"

# 錯誤處理函數
function Handle-Error {
    param (
        [string]$operation,
        [string]$errorMessage
    )
    Write-Error "執行 $operation 時發生錯誤: $errorMessage"
}

# 刪除 AKS 集群
Write-Output "正在刪除 AKS 集群..."
try {
    Remove-AzAksCluster -ResourceGroupName $resourceGroupName -Name $aksClusterName -Force -AsJob
    $job = Get-Job | Where-Object { $_.State -eq "Running" }
    $job | Wait-Job
    Write-Output "AKS 集群刪除完成"
} catch {
    Handle-Error -operation "刪除 AKS 集群" -errorMessage $_.Exception.Message
}

# 刪除 ACR
Write-Output "正在刪除 Azure Container Registry..."
try {
    Remove-AzContainerRegistry -ResourceGroupName $resourceGroupName -Name $acrName
    Write-Output "Azure Container Registry 刪除完成"
} catch {
    Handle-Error -operation "刪除 Azure Container Registry" -errorMessage $_.Exception.Message
}

# 刪除資源群組及其所有資源
Write-Output "正在刪除資源群組及其所有資源..."
try {
    Remove-AzResourceGroup -Name $resourceGroupName -Force -AsJob
    $job = Get-Job | Where-Object { $_.State -eq "Running" }
    $job | Wait-Job
    Write-Output "資源群組刪除完成"
} catch {
    Handle-Error -operation "刪除資源群組" -errorMessage $_.Exception.Message
}

Write-Output "清理操作完成。請檢查上面的輸出以確保所有資源都已成功刪除。"

看起來有點嚇人?別擔心,讓我們一步步來解析這個腳本的魔力!

腳本解析:逐步拆解魔法咒語

步驟1:登入Azure帳戶

Connect-AzAccount -UseDeviceAuthentication

這行代碼就像是敲門磚,告訴Azure:「嘿,是我啦!讓我進去打掃一下!」它使用設備代碼認證,非常安全,適合你在咖啡廳這種公共場所使用(當然,小心別讓別人偷看你的螢幕就是了)。

步驟2:設定目標

$resourceGroupName = "your-resource-group-name"
$aksClusterName = "your-aks-cluster-name"
$acrName = "your-acr-name"

這幾行就像是你在告訴PowerShell:「喂,等下要清理的目標是這些,給我記清楚啊!」記得把引號裡的內容換成你自己的資源名稱。

步驟3:錯誤處理小幫手

function Handle-Error {
    param (
        [string]$operation,
        [string]$errorMessage
    )
    Write-Error "執行 $operation 時發生錯誤: $errorMessage"
}

這個函數就像是你的小跟班,隨時準備幫你收拾殘局。如果刪除過程中出了什麼岔子,它會立刻報告:「老大,有情況!」

步驟4:開始大掃除

接下來的部分就是實際的清理工作了。我們分三個階段:

  1. 刪除AKS集群
  2. 刪除Azure Container Registry
  3. 刪除整個資源群組

每個階段都遵循類似的模式:

try {
    # 執行刪除操作
    # 等待操作完成
    # 報告成功
} catch {
    # 如果出錯,呼叫我們的錯誤處理小幫手
}

這就像是你指揮清潔工團隊:「先拆掉那個大型裝置,然後清理儲藏室,最後把整棟樓都拆了!」而且每個步驟都有專人監督,一有問題立刻報告。

步驟5:最後的總結

Write-Output "清理操作完成。請檢查上面的輸出以確保所有資源都已成功刪除。"

這行就像是清潔工作結束後的最後一次巡視:「好了,應該都清乾淨了,不過最好再檢查一下,以防萬一。」

使用技巧:讓你的清理工作更上一層樓

  1. 變數設定要小心:確保你填入的資源群組名稱等資訊都是正確的。刪錯資源群組,那可就真的是「欲哭無淚」了。

  2. 先測試後實戰:在正式使用前,可以先用-WhatIf參數來模擬運行,看看會刪除哪些資源。例如:

    Remove-AzResourceGroup -Name $resourceGroupName -WhatIf
    
  3. 設置斷點:如果你想在某個關鍵步驟前暫停腳本執行,可以使用Read-Host命令:

    Read-Host -Prompt "即將刪除資源群組,按Enter繼續或Ctrl+C取消"
    
  4. 添加日誌:將腳本的輸出保存到日誌文件,方便日後查閱:

    .\your-script.ps1 | Tee-Object -FilePath "cleanup_log_$(Get-Date -Format 'yyyyMMdd_HHmmss').txt"
    
  5. 定期清理:考慮將這個腳本設置為定期任務,例如每週五下班前自動運行,清理測試環境。

注意事項:小心駕駛,安全至上

注意事項描述建議
權限檢查確保你有足夠的權限刪除這些資源使用 Get-AzRoleAssignment 檢查你的權限
資源依賴某些資源可能有依賴關係使用 Get-AzResource 檢查資源之間的依賴
備份重要數據刪除前確保重要數據已備份使用 Azure Backup 或手動導出數據
測試環境先行先在非關鍵環境中測試腳本創建一個模擬的資源群組來測試腳本
版本控制對腳本進行版本控制使用 Git 來管理你的腳本版本

結語:你現在是PowerShell清道夫了!

恭喜你!你已經掌握了「PowerShell一鍵清雲」大法。從此以後,清理Azure資源再也不是一件苦差事,而是幾行代碼就能搞定的小case。

記住,強大的力量伴隨著巨大的責任。在使用這個腳本時,請務必小心謹慎,確保你真的想要刪除這些資源。畢竟,我們可不想看到你在深夜發一篇「求助!不小心刪了生產環境」的慘痛文章。

最後,希望這篇文章能幫你節省時間、金錢,並且在同事面前大出風頭。記得時不時回來看看,說不定我們會更新一些新招數喔!

那麼,各位Azure冒險家們,準備好開始你的清理之旅了嗎?PowerShell腳本已就緒,就等你來施展魔法了!祝你清理愉快,省錢開心!