
※2020-09-17追記:ステップ①-2,4のスクリプトをエラーが発生しないスクリプトに修正致しました。
Intune、使っていますか?
GUI、使いやすいですか?
個人的には結構お世話になっているAzure PortalのIntuneの画面ですが、
この画面の操作について、PowerShellでも操作をすることができます。
PowerShellが使えるようになると、色々とハッピーなポイントがありますので是非お試し下さい。
想定している読者層はこちらです。
- Intuneを利用している社内SE(Intune管理者ロールを持っている人)
- Azure Portal(Microsoft Endpoint Management)上の操作をPowerShellで実現したい人
環境構築編
ステップ① PowerShellモジュールのセットアップ
-
管理者権限でPowerShellを起動
-
モジュール確認(1回目)
Get-Module -ListAvailable -Name Microsoft.Graph.Intune|select Version,Name

※結果が出力された場合は目的のモジュールがインストール済みです。ステップ②に進んで下さい。
- モジュールインストール
Install-Module -Name Microsoft.Graph.Intune

- モジュール確認(2回目)
モジュールが追加されたことを確認
Get-Module -ListAvailable -Name Microsoft.Graph.Intune|select Version,Name

ステップ② Azure ADの権限の設定する
Azure ADの管理者に依頼してIntune管理者の権限を取得します。

ステップ③ PowerShellでIntuneを参照するために接続する
Intuneで管理している情報にアクセスするため、下記のコマンドを実行します。 コマンド実行時にIntuneにアクセスするユーザーの認証が求められます。
Connect-MSGraph


資格情報を使用してサインインし、MSGraphの承認を求められたら[同意する]をクリックします。
(承認を求められるのは最初の1度だけです)
実践編
Intuneの機能を使ってみる①(GUIでもできること)
Ⅰ. Intuneで管理しているデバイスの中から所有権が個人になっているデバイスを検索する
下記のように、フィルター条件に所有権(managedDeviceOwnerType)が個人のものを指定すると、所有権が個人のデバイス名が表示されます。
Get-IntuneManagedDevice -Filter "(managedDeviceOwnerType eq 'personal')" -Select deviceName

Intuneの機能を使ってみる②(GUIではできないこと)
Ⅰ. 複合条件を指定した検索を行う
Intuneで管理されているデバイスは、CUI上ではIntuneManagedDeviceやmanagedDeviceなどと表記されています。
大量のデバイスのうち参照したい対象を抽出する際に、GUIではよく利用される項目に条件をつけて抽出が出来ます。(これで基本的には十分)
さらにフィルタした結果から、検索バーを利用してシリアル番号やUPNなどの情報から検索することができます。
※MSあるあるの先頭文字マッチ検索「以外」にも対応しているのが素晴らしいです

しかしGUI上に無い、ニッチな条件で端末を探す際はPowerShellコマンドが優れています。
例えばOSバージョンとOSのバージョンを指定した検索の場合はこのように実行できます。
Get-IntuneManagedDevice |?{$_.osVersion -gt '10.0.18363.99999' -and $_.operatingSystem -eq "Windows"}|select deviceName

上記の様に複数条件を入力してかゆいところに手が届く検索が実行できます! その他のデバイスの属性情報を確認したい場合はこちらのサイトを参照して下さい。
Ⅱ. 検索で取得したデバイスに対して一括処理を実施する
MS Learnより引用
Azure portal では、利用可能なさまざまな Azure オファリングの検索、 インストール、およびアクセスを行うための便利なユーザー インターフェイスが提供されます。 しかし、これらのタスクの一部は 反復的 であり、コマンドライン対応インターフェイスを使用した自動化の候補であることがわかります。
本記事で一番やりたかったことです!
Azure Portal(またはMEM)上でデバイスの情報を更新する場合、1デバイス毎に詳細画面を開いて更新作業を行う必要がありますが、PowerShellであれば一括で実施出来ます。 例えば特定条件を満たす端末に対してデバイスの所有権(managedDeviceOwnerType)を一括更新など実施できます。
Ⅲ- サンプル
- OSがWindows、デバイスカテゴリーが企業管理端末、デバイスの所有権が個人になっている端末を検索
Get-IntuneManagedDevice |?{ $_.operatingSystem -eq "Windows" -and $_.deviceCategoryDisplayName -eq "企業管理端末" -and $_.managedDeviceOwnerType -ne "company"}|select deviceName,deviceCategoryDisplayName,managedDeviceOwnerType

- 1で抽出された対象の端末のデバイスの所有権をcompanyをに更新する
※更新処理が入っております。
検証で下記コマンドを実行する場合は条件を追加して、業務に影響の無い対象に絞ってからコマンドを実行して下さい。
Get-IntuneManagedDevice |?{ $_.operatingSystem -eq "Windows" -and $_.deviceCategoryDisplayName -eq "企業管理端末" -and $_.managedDeviceOwnerType -ne "company"}|Update-IntuneManagedDevice -managedDeviceOwnerType company

- 更新結果を確認する
Get-IntuneManagedDevice |?{ $_.operatingSystem -eq "Windows" -and $_.deviceCategoryDisplayName -eq "企業管理端末" }

おわり
どなたかの参考になれば幸いです!