いらなくなった Azure AD のテナントを削除する際、以下図のよう削除前にやるべきことを示唆されます。
ほとんどが画面上からポチポチして状態をグリーンにできるんですが、エンタープライズアプリケーションの削除は、画面上では削除できないやつがあります。イラっとしますね。
Azure Portal からは削除できないエンタープライズアプリケーションを PowerShell を使って削除する方法のメモです。
PowerShell の準備
公式ドキュメント に記載がある通り、利用できるの PowerShell の 5.1 ~ 6、64 bit OS のみなので要注意です。
ドキュメントを疑って PowerShell 7 を Windows Terminal から起動して試しましたが、コマンドを実行してサインイン後に死にました)。
モジュールのインストール
PowerShell を管理者権限 で起動します。ちなみに私は Windows Terminal から PowerShell を実行しました。
今回使うコマンドは Azure Active Directory PowerShell for Graph (通称 AzureADv2) を使うので、インストールします。
Install-Module AzureAD
エンタープライズアプリケーションをぶっころ...
AAD のテナント ID を取得
Azure AD へのサインインをするのにテナントのテナント IDを使いたいので、Azure Portal で削除したい Azure AD にログインして、概要のメニューからテナント IDをコピーしておきます。
モジュールの Import
では、モジュールをインポートするのに以下のコマンドを打ちます。そうするとなんか聞かれますがもちろん実行します。
Import-Module -Name AzureAD
エンタープライズアプリケーションの削除
ここからようやく本題です。引き続き PowerShell で以下のコマンドをたたきます。コマンドのオプションで前述で取得した AADの テナント ID を指定することでと想定外のテナントと接続してしまうリスクを避けます。
connect-azuread -tenantid <テナント ID>
サインインのウインドウが開きますのでサインインします (縦長やな...) 。
サインインできたら、接続した情報が表示されます。TenantDomain が、削除したい AAD であることを確認しておきましょう。
次は Azure Portal で Azure AD を開く > テナントの削除 をクリック > (以下図の画面で) すべてのエンタープライズアプリケーションを削除するをクリックします。
手で削除できなかったエンタープライズアプリケーションを開き、オブジェクト ID を確認しておきましょう。
で、PowerShell で Remove-AzureADServicePrincipal のコマンドを打ちます。オプションでオブジェクト ID を付けます。
Remove-AzureADServicePrincipal -ObjectId <オブジェクト ID>
Get-AzureADServicePrincipal
のコマンドでサービスプリンシパルの一覧を取ってきてForEach
で片っ端から削除することができますが、私の場合 1つだけなのでやりません。やるならこんな感じのコード
$targetApps = Get-AzureADServicePrincipal
$targetApps.ForEach{ Remove-AzureADServicePrincipal -ObjectId $_.ObjectId}
Azure Portal でエンタープライズアプリケーションを見ると空っぽになりました!縦から見ても横から見てもリロードしてもログインしなおしてみても完全無欠の空っぽです ( ・ㅂ・)و ̑̑
いざAzure AD のテナントを削除!........っておい ( 'д'⊂彡☆))Д´) パーン!!!!!!!!
エンタープライズアプリケーションをぶっころせてない?!
と、上の画面は今日4つのディレクトリを削除なかで唯一削除できなかったテナントの話なのですが、ほかの3つのディレクトリは普通に削除できたし、以前にもこのやり方でたくさん削除してきたので手順は問題ないと思っています。
(根拠はありませんが、今までも削除はできてるしっていうあくまで個人的な感覚です)
ちなみに削除できなかったディレクトリは5年以上前に作った古いものなんですよねー(ほかのはここ1-3年くらいに作ったもの)。その辺もなんか関係あるのかな...知らんけど。。。
サービスプリンシパルの一覧から全部削除したろうかとも思いましたが、それだと原因がよくわからない状態になる気がするので試さず、原因わかったらまた追記しようと思います(放置しそう...。