Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@Shinya-Yamaguchi

Azure AD 上の不要なデバイスを PowerShell で確認、削除する方法。

More than 1 year has passed since last update.

はじめに

今回は、下記イタリアの MS エンジニアが Blog に投稿していたネタを基に、不要になった Azure AD 上のデバイスを PowerShell を使って抽出し、削除してきれいに整理する方法について紹介します。

-参考情報
Tips on PowerShell Modules for Managing Stale Devices
URL:https://techcommunity.microsoft.com/t5/Core-Infrastructure-and-Security/Tips-on-PowerShell-Modules-for-Managing-Stale-Devices/ba-p/840830

やってみる

まず、PowerShell で削除する方法以外に、Azure AD 上に登録(参加)している不要なデバイスを削除する方法は以下 2 とおりあります。

Azure ポータルより削除する

「Azure Active Directory」→「デバイス」→「すべてのデバイス」より、下記画面ショットのように☑を入れた状態で画面上部の「削除」を選択すれば削除できます。

image.png

Microsoft 365 管理センターから削除する

管理ポータル(admin.microsoft.com)にログインし、管理センターの「Azure Active Directory」を選択後、Azure Active Directory 管理センターより、「Azure Active Directory」→「デバイス」→「すべてのデバイス」の順に選択し、同じように☑を入れて、「削除」を選択することで削除ができます。
image.png

image.png

また、Azure AD には「結合の種類」という Azure AD にデバイスを登録(参加)する方法が 3 種類(例外を入れると4 種類あります)

結合の種類 説明 メリット等
Azure AD Registered (登録) 会社で管理されていないデバイスを SSO させたい場合に利用 BYOD 向け、条件付きアクセスで制御可能
Azure AD Join (参加) 社用 PC をクラウド用途のみに使いたい場合に利用 リモートワーク向けに最適、条件付きアクセスで制御可能
Hybrid Azure AD Join オンプレミス AD に参加しつつ Azure AD Join する構成 オンプレミス AD の GPO が適用できる、条件付きアクセスで制御可能
なし Intune Enrollment を使わずに、Outlook Mobile か Authenticator によりデバイス登録した時に発生する 正しく構成できてないのでクラウド リソースは使えない、条件付きアクセスで制御可能不可
PowerShell による確認、削除方法について

本題の、PowerShell を使った、デバイス一覧の取得方法ですが、下記コマンドレットで抽出自体は可能です。

  1. PowerShell を起動し、Connect-MsolService を実行します。

  2. グローバル管理者の UPN を入力し、「次へ」をクリックします。
    image.png

  3. パスワードを入力し、「サインイン」をクリックします。
    image.png

  4. Get-MsolDevice -all | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp を実行します。

実行結果は下記のようになります。

PS C:\WINDOWS\system32> Get-MsolDevice -all | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp


Enabled                       : True
DeviceId                      : cc5de156-1a39-42e6-bd79-e9cea80eefdc
DisplayName                   : Windows10-18095
DeviceTrustType               : Domain Joined
ApproximateLastLogonTimestamp : 2019/08/26 6:42:34

Enabled                       : True
DeviceId                      : e87d4c7d-abf7-43b7-bebc-f816f772eaee
DisplayName                   : Windows10-18098
DeviceTrustType               : Domain Joined
ApproximateLastLogonTimestamp : 2019/09/11 22:06:16

Enabled                       : True
DeviceId                      : 7713fc57-6326-421c-a00d-00c1d73b0a78
DisplayName                   : Windows1809-02
DeviceTrustType               : Azure AD Joined
ApproximateLastLogonTimestamp : 2019/07/22 10:48:15

Enabled                       : True
DeviceId                      : 7e6cf25d-20bb-4ded-992e-5f5ee7cc2ab5
DisplayName                   : Windows10-18095
DeviceTrustType               : Workplace Joined
ApproximateLastLogonTimestamp : 2019/05/18 6:03:01

上記コマンドレットでも確認はできるのですが、例えば実際にデバイスが登録されたままだけど、実はログオンはしている(利用はしている)という識別をする、要は、より正確な絞り込みをするためには、-LogonTimeBefore オプションを使うと便利です。

90 日以上ログオンしていないデバイスを抽出するためには、以下のようなコマンドレットを実行します。

$date = get-date -date $(get-date).adddays(-90) -format MM-dd-yyyy
Get-MsolDevice -all -LogonTimeBefore $date | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp

ちなみに、この-LogonTimeBefore オプションですが、MSonline のバージョンが1.1.183.17以上である必要があります。
バージョンの確認は、Get-Module -name MSonline で行えます。

Get-Module -name MSonline

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   1.1.183.17 MSOnline                            {Add-MsolAdministrativeUnitMember, Add-MsolForeignGroupToR...

バージョンが古い場合は、Remove-Module -name MSOnline でアンインストール後に、Install-Module MSOnlineで再インストールすることで最新版をゲットできます。

Excel に出力して管理したいんです、ということであれば、下記コマンドレットにて出力が可能です。

例)
Get-MsolDevice -all -LogonTimeBefore $date | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp | export-csv c:\DeviceList-olderthan-90days-summary.csv

image.png

最後に、ある一定日以上ログオンしてないデバイスは削除する場合は、"|"(パイプ)で remove-msoldevice -force でつなげることで実行可能です。-force オプションはプロンプトで確認が行われず強制削除されますので、実行に注意してください。

例) --force オプションを付けない場合

Get-MsolDevice -all -LogonTimeBefore $date | remove-msoldevice

確認
この操作を続行しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"):

例) --force オプションを付けた場合

Get-MsolDevice -all -LogonTimeBefore $date | remove-msoldevice -force

削除されたか確認します。(デバイスが表示されないことを確認します。)

Get-MsolDevice -all -LogonTimeBefore $date | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp

Azure ポータルで確認しても Azure AD Registered として登録されていた、 Windows10-18095 が削除されてことが確認できます。
(全 6 デバイスから 5 デバイスに減っています)

image.png

おわりに

今回は、Azure AD 上に登録された不要なデバイスを整理する方法についてご案内しました。
特に管理者の方であれば Azure AD 上に登録された無数のデバイスの中で、一体どのデバイスを削除すればいいのか分からない、分からないからそのままでいいや、と思って不要なデバイスが増え続けている、という状況があるのではないでしょうか。

今回ご案内した方法で長期間ログオンしていないデバイスを抽出、Excel に書き出して、実際の利用者に対して確認してもらうことで、確実に不要なデバイスを削除することができるようになると思いますので活用してみてください。

今回の記事が少しでも参考になれば幸いです。

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Shinya-Yamaguchi
月1 くらいのペースを目標に主に Azure Active Directory に関する動作検証を行い、その結果を Qiita にアウトプットしています。 また、本記事は個人的な検証内容を基に記事を書いておりますので、あくまで参考程度にしていただけますと幸いでございます。 コロナ禍でリモートワーク中心になり会社の近くの丸亀製麺に行けなくなったので袋麺のラーメンばっかり食べてます。
microsoft
マイクロソフトのメンバーが最新の技術情報をお届けします。Twitterアカウント(@msdevjp)やYouTubeチャンネル「クラウドデベロッパーちゃんねる」も運用中です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?