💡

PowerShellでIntuneの情報を取得する(Microsoft Graph)

2023/01/10に公開

はじめに

PowerShellでIntuneに登録された端末の情報やコンプライアンスポリシーを取得したいときの忘備録になります。

準備

Microsoft Graphのアクセス許可のリファレンスからIntuneに関係するものを探してみます。
※検索窓でIntuneと入力してみてください

https://learn.microsoft.com/ja-jp/graph/permissions-reference

アクセス許可多すぎ!!ってなってたら下の方にサンプルがありました。

https://learn.microsoft.com/ja-jp/graph/permissions-reference#example-usage-22

なるほど。Intuneに登録しているデバイス、管理対象アプリ、コンプライアンスポリシーごとにアクセス許可が違うみたいです。

アクセス許可 使用例
DeviceManagementConfiguration.Read.All コンプライアンスポリシーや構成プロファイルの割り当て状態とか?
DeviceManagementApps.Read.All アプリケーション情報
DeviceManagementManagedDevices.Read.All デバイス情報
DeviceManagementManagedDevices.ReadWrite.All デバイスの影響度が少ないプロパティを変更する
DeviceManagementManagedDevices.PrivilegedOperations.All デバイスのパスコードリセットや所有権の変更などの影響が大きいリモート操作やプロパティの変更

次にPowerShellで利用可能なモジュールを探してみます。
※アクセス許可の頭文字に「DeviceManagement」がついているのでこれを頼りにモジュールを探します。

https://learn.microsoft.com/en-us/powershell/microsoftgraph/?view=graph-powershell-1.0

Microsoft.Graph.DeviceManageMentモジュールがあり、Microsoft.Graph.DeviceManageMent.ActionsやEnrollmentなどサブモジュールがあるようです。
パッと見た感じ使えそうなGetコマンドトレットを試し打ちしてみたいと思います。

モジュールのインストール方法などはこちらにざっくりと記載しています。
本記事では割愛いたしますので、良ければご覧ください。
https://zenn.dev/santafs/articles/076d85de726c10

接続

# 実運用でのアクセス許可はもう少し細かくした方が良いです。
Connect-MgGraph -Scopes "DeviceManagementConfiguration.Read.All","DeviceManagementApps.Read.All","DeviceManagementManagedDevices.Read.All"

登録済みデバイス

デバイス一覧

Get-MgDeviceManagementManagedDevice

Intuneに登録済みデバイスの総数

Get-MgDeviceManagementManagedDeviceOverview | fl EnrolledDeviceCount

※Microsoft Graph REST APIのリファレンスを見るとリターンオブジェクトの詳細が分かります。
https://learn.microsoft.com/ja-jp/graph/api/intune-devices-manageddeviceoverview-update?view=graph-rest-1.0#request-body

特定のデバイスのプライマリユーザー

Get-MgDeviceManagementManagedDeviceUser -ManagedDeviceId "対象のデバイスID"

コンプライアンスポリシー

コンプライアンスポリシーの一覧

Get-MgDeviceManagementDeviceCompliancePolicy

特定のデバイスのコンプライアンスポリシーの割り当て状況

Get-MgDeviceManagementManagedDeviceCompliancePolicyState -ManagedDeviceId "デバイスのID"

特定のコンプライアンスポリシーの非準拠のデバイス一覧

Get-MgDeviceManagementDeviceCompliancePolicyDeviceStatuses -DeviceCompliancePolicyId "コンプライアンスポリシーのID" -Filter "Status eq 'nonCompliant'"

# 上のコマンドがエラーになったので仕方なくCSV出力
Get-MgDeviceManagementDeviceCompliancePolicyDeviceStatuses -DeviceCompliancePolicyId "コンプライアンスポリシーのID" | Export-Csv -Path "パス" -Encoding UTF8

StatusがnonCompliantのものとかを調査すればよいかなという感じです。
意外とStatusパラメーターの種類が多い。

deviceComplianceDeviceStatusのプロパティ
https://learn.microsoft.com/ja-jp/graph/api/resources/intune-deviceconfig-devicecompliancedevicestatus?view=graph-rest-1.0#properties

デバイスの準拠ステータス
https://learn.microsoft.com/en-us/mem/intune/protect/compliance-policy-monitor#device-compliance-status

構成プロファイル

構成プロファイルの一覧

Get-MgDeviceManagementDeviceConfiguration

おわりに

Microsoft Graph PowerShellでIntuneの基本的な情報は取得できました。
デバイスのプロパティなどを変更した際の忘備録も書ければと思います。

2023年一本目の記事をご覧いただきありがとうございました!

Discussion