🐈

使ってなさそうな Bastion を削除する

2023/04/20に公開

使ってなさそうな Bastion を削除する

というわけで、前回作成した Azure Bastion で session 一覧を出す PowerShell cmdlet を使って、使ってなさそうな Bastion を削除してみましょう。
このために作ったこともあり、非常に簡単ですね。

Get-AzBastion | ForEach-Object {
    $sessionCount = (Get-MyAzBastionSession -Id $_.Id).Count

    if ($sessionCount -eq 0) {
        Write-Verbose "Removing Bastion with ID $($_.Id)..."
        Remove-AzBastion -ResourceId $_.Id -Force
    } else {
        Write-Verbose "Bastion with ID $($_.Id) has $sessionCount session(s) remaining."
    }
}

実行中に出力する message も適当に ChatGPT に考えてもらいました。
利用中の session があれば、残ってるよ、という message を出します。

VERBOSE: Bastion with ID /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxxxxxx/providers/Microsoft.Network/bastionHosts/bast-hub00 has 1 session(s) remaining.

利用中の session が無いようであれば -Force 付きで Remove-AzBastion を実行し強制削除します。

VERBOSE: Removing Bastion with ID /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/xxxxxxxx/providers/Microsoft.Network/bastionHosts/bast-hub00...

小ネタ: Write-Verbose を画面に出す方法

$verbosePreference = 'Continue' と書いてから上記実行すると、Write-Verbose で出力された message が画面に出るようになります。
ほかに Write-Debug などがありますが、順番については about_Output_Streams を参照くださいませ。

まとめ

本当はこれを Azure Functions の TimerTrigger で毎晩 AM 00:00 - 05:00 に実行、というところまでやりたかったのですが飽きたのでいったんここまでとします。

Microsoft (有志)

Discussion