Azure VMのWindowsをシャットダウンしたとき自動的に割り当て解除する

 Azure上でWindows 11クライアントをリモートデスクトップ用に運用してて、課金を減らすため使用後、シャットダウンで割り当て解除、Deallocateの状態にする方法についてChat GPTと相談してできるようになりました。
 まずはVMの設定で、VMからAzureの状態を操作できるように権限を付与します。AzureポータルのVMのIDで、システム割り当てをオンの状態にして保存。次にアクセス制御IMAで、ロールの割り当てを追加で仮想マシン共同作成者のロールを追加。割当先は現在のVMになります。
 つぎにVMのWindowsのPowerShellからAzure操作のコマンドを実行するためAzモジュールをインストール。

Install-Module Az -Repository PSGallery -Force

 そして以下のps1スクリプトを作成し、グループポリシーのシャットダウンスクリプトに登録。仮想マシン名を取得するためにIMDSへアクセスしています。

$vm = Invoke-RestMethod -Headers @{"Metadata"="true"} -Uri "http://169.254.169.254/metadata/instance/compute?api-version=2021-02-01"

Stop-AzVM -ResourceGroupName $vm.resourceGroupName -Name $vm.name -Force

 これでVMをシャットダウンするとVM Deallocateに移行するようになりました。