掲載内容は個人の見解であり、所属する企業を代表するものではありません.
同僚に以下のような依頼をされてちょろっと作ったサンプルスクリプトです。
これなら Azure AD にサービスプリンシパル作っておいて、それ使って Connect-AzAccount して Start-AzVM とか Stop-AzVM とかすれば出来るっしょ、と安請け合いしたものです。 まあその通りではあったのですが、久しぶりにコーディングすると地味にはまりますね・・・。 内容は成果物 をご参照いただければと思います。
Azure PowerShell 6.1.0 がインストールされている環境であれば動作するはず。 サービスプリンシパルを1つ作成して、対象となる仮想マシンに対して共同作成者等の役割を割り当て、あとはそれらの情報をスクリプトの引数に与えてやればOKです。