Microsoft Intuneの設定をPowerShellから行う

皆さんこんにちは。国井です。

最近、Microsoft Intuneに関するお問い合わせが多くなっており、
セミナーをやってほしいとのご連絡をいただくことも多くなってきました(ありがたいことです)。

そこで、今日はMicrosoft Intuneの話をしようと思います。
具体的にはPowerShellからMicrosoft Intuneを操作する方法についてです。

Microsoft IntuneはGUIからの操作をサポートしており、それはそれで便利なのですが、PowerShellからまとめて設定できるような方法もあってほしい、との声をよく聞きます。
そんなあなたのためにIntuneにはGraph APIを経由して操作する方法が用意されており、これをPowerShellから操作することで、やりたいことの多くは実現できると思います。

■Intune APIs in Microsoft Graph – Now generally available
https://cloudblogs.microsoft.com/enterprisemobility/2018/01/31/intune-apis-in-microsoft-graph-now-generally-available/

Graph APIを利用する場合には、Azure ADに専用のアプリを作り、そこからOAuth 2.0を利用してIntuneにアクセスするという仕組みを事前に作っておきます。
設定方法は、、って説明しようと思ったらMSのサイトに解説が書いてあったので、そちらを参考にしてください。

■Azure AD を使用して Microsoft Graph の Intune API にアクセスする方法
(Microsoft Graph API を使用するアプリを登録する」部分参照)
https://docs.microsoft.com/ja-jp/intune/intune-graph-apis

なんでGraph APIとMicrosoft Intuneの話にAzure ADが絡んでくるの?
まず、Graph APIでMicrosoft Intuneにアクセスする場合、誰でもアクセスできては困るので、認証と認可を事前に行わなければなりません。Microsoft Intuneでは、そもそも利用するのにAzure ADを使って認証・認可をしていましたよね?だから、Azure ADを使うのです。
ここまでは誰でもわかることだと思います(ちなみにOAuth2.0を使った認可の仕組みを実装しています)。

次に、出てくる疑問として、Microsoft Intuneの認証・認可にもともとAzure ADを使っているのに、Microsoft IntuneをアプリケーションとしてAzure ADに登録するか?ってことです。これはこう考えるとよいでしょう。
オンプレミスの配置されたサーバーにアクセスするとき、Active Directoryドメインを使って認証・認可を行うと思います。このとき、サーバーへのアクセスにActive Directoryが利用できるかどうかは、事前にドメインに参加しているかどうかで決まります。サーバーをドメイン参加させておくことでActive Directoryによる認証・認可ができるのです。それと同じように、Microsoft IntuneでもAzure ADにアプリケーションとして登録しておく(つまり、この行為がオンプレミスのドメイン参加に相当すると思えばよいでしょう)ことで、Azure ADを使って認証を行い、そしてどこまでのアクセスを許可するかを決定(つまり、認可ですね)することができるのです。
だからこそ、Microsoft Intuneを利用するのであれば、Azure ADにアプリケーションとして登録する必要があるのです。

アプリができたら、PowerShellからアクセスするのですが、何を書けばいいかわからない、という問題にぶち当たります。ですが、そこもPowerShellのサンプルがGitHubにあがっているので、これを使えば簡単(?)です。

■GitHub powershell-intune-samples
https://github.com/microsoftgraph/powershell-intune-samples

色々なサンプルが用意されているのですが、今日はこの中からIntune登録デバイスのプロパティに設定されている[デバイス所有者]の設定を個人から企業に設定変更する方法についてみてみます。

image

デバイスのプロパティにある[デバイス所有者]の設定は、単なるプロパティ情報ではなく、企業の端末に設定されているときだけリモートワイプが設定できるようになるなど、他のIntuneの機能にも影響が及ぶので、ぜひ押さえておきたい設定です。

■Intune のリモートワイプとリモート パスコードリセット機能は「会社所有端末」のみを対象に発行できるようになります
https://blogs.technet.microsoft.com/jpintune/2018/10/23/wipeandpasscodeforcompanydevicesonly/

話が少しそれてしまいましたが、もとに戻して、Intune用のPowerShellサンプルを実行するときは、そのデバイス上で事前にAzure AD PowerShellをインストールしておく必要があります。

Install-Module AzureAD

上記のコマンドを入力し、実行します。

実行できたら、続いて[デバイス所有者]の設定に必要なデバイスの情報を収集します。デバイスの情報は、サンプルの ManagedDevices > ManagedDevice_Get.ps1 を使います。
ファイルの内容をPowerShell ISEにペーストし、実行すると、ご覧のように個々のデバイスの詳細データが出てきます。

image

これをもうちょっと見やすくするには、

Get-ManagedDevice | ft deviceName, id, managedOwnertype

のように実行すればよいでしょう。

image

これで、デバイス名に対応するIDを確認できたら、いよいよ[デバイス所有者]の設定を変更します。
設定変更は、サンプルの ManagedDevices > ManagedDevice_DeviceOwnership_Set.ps1 を使います。
これまたファイルの内容をPowerShell ISEにペーストし、実行します。
単純に実行しても何も起きないので、改めてSet-ManagedDevicesコマンドレットをデバイスのIDと[デバイス所有者]設定を企業(company)になるように設定します。

Set-ManagedDevices –id xxxxxx –ownerType company

すると、デバイス所有者がcompanyに変わったことが確認できます。

image

こんな感じで設定変更できます。

★おまけ★

Set-ManagedDevicesコマンドレットですが、スクリプトの中身を見ると、
287行目の部分で、JSON形式でIntuneに渡してあげる項目と値が定義されていることがわかります。
image

ここを変更することによって、異なる設定項目を設定したり、異なる値を設定したりすることができます。