Windows Autopilot の導入やそれに伴う Microsoft Intune の設計では、これまでマスタやキッティングで実施していたアプリインストール工程の Intune アプリ展開機能 置き換えを検討することがあります1。
その際、「これまでアプリインストール時にログを出していたが、Intune 環境でも同じようにログを使えるか?」と聞かれることが結構ありますが.......... 安心してください、できます!
さらに、ログ出力場所・名前に一工夫すると「デバイスの診断」アクションを使ってデバイスローカル上のログを Intune テナントにアップロードできることが、先日検証して分かりました!
本記事では検証したアプリのログ出力と「デバイスの診断」の活用例をご紹介し、最後にご参考として Intune 標準機能のレポートやログの情報をまとめます。
将来的に「デバイスの診断」により収集されるデータが変更になる場合は、本記事の内容もアップデートが必要になります。AS-IS の情報になる点ご承知おきください。
なお、本記事で扱う範囲は以下です。
# | カテゴリ | 本記事の範囲 | 備考 |
---|---|---|---|
1 | デバイス プラットフォーム | Windows 10/11 | Windows 限定 (他プラットフォーム応用不可) |
2 | デバイス参加方式 | Entra join または Entra hybrid join (いずれも Intune 登録済みであること) | 「デバイスの診断」機能にサポート要件があり、Entra register の端末では利用不可です |
3 | 展開対象アプリ | MSI インストーラーを例に使います | 他の拡張子のインストーラーにも応用可能 |
4 | Intune 機能 | Windows アプリ (Win32)、「デバイスの診断」アクション | 2024 年 2 月 GA 予定のMicrosoft Intune Enterprise App Management (Windows catalog app (Win32)) にも応用できる可能性あり2 |
本記事では例としてmsiexec のログオプションを使いますが、別の拡張子のアプリでも処理をスクリプト化すれば応用可能です!
ただし、Intune 機能は Windows 向けのアプリならびに Windows 向けのリモート アクションを使うため、対象デバイスとしては Entra joined/hybrid joined Windows に限定されてしまう点ご注意ください。
前情報
1. アプリ インストール ログ
アプリケーション インストーラー実行に伴う処理結果を記録したファイルを、本記事では一律アプリ インストール ログとして扱います。
例として MSI 形式のインストーラーであれば、msiexec.exe のログオプションや、その他にも企業情シス担当者様作成のインストールスクリプト内のログ処理も含みます。
想定される用途は、まずアプリ インストール エラーの際の事象切り分けや、アプリベンダーにエスカレーションする際の事象説明エイドなどです。
これまでこうしたログを使っていたお客様ではログの必要性を感じられており、「今後アプリを Intune から展開するようになっても継続利用したい」と希望されるケースが多いです。
2. デバイスの診断
参考: Collect diagnostics from a Windows device
Windows プラットフォームでサポートされるデバイス アクションのひとつ。
アクションを実行すると、デバイスローカル上の所定 (上記公開情報記事に記載) のファイル、レジストリ、イベント、コマンド実行結果を ZIP にして Intune 管理センターにアップロードしてくれます。
(2209 サービスリリース以降、Autopilot エラー発生時に自動的にこの診断収集が実行されるようになりました。参考:Autopilot automatic device diagnostics collection)
Intune 管理センターにアップロードされた ZIP は、管理者がダウンロードしてトラブルシュートに活用できます。
公開情報上で本機能の収集対象となっているデータのなかに、以下があります。
-
%windir%\temp%computername%*.log
← C:\Windows\Temp\ ディレクトリ下の、デバイスホスト名から始まる「.log」拡張子のファイル
ということは.... アプリ インストール ログのファイル名を "%computername%*.log"にし、"C:\Windows\Temp" 配下に出力すれば「デバイスの診断」で釣れるのでは?
と思い、検証したところ、できました!
以下に実装方法・動作例をまとめます。
実装方法 と 動作例
1. アプリ展開設定
1) Win32 アプリ作成
参考:
ベンダーサイトからダウンロードまたは企業情シス担当者様から連携を受けたインストーラーを「.intunewin」形式にパッケージングし、新規「Windows アプリ (Win32)」を作成します。工程の詳細は公開情報をご参照ください。
今回の検証では Zoom を使いました。
余談ですが Zoom はじめ、企業環境でよく使われるアプリは今後 GA される Enterprise App Management のカタログにどんどん取り込まれ、Intune 担当者が自力でインストーラー入手・パッケージングする場面が減ってくるのではと個人的には予想しています。
(工程詳細を記事にしても 3 月以降需要が激減するのではと...)
i. インストーラー入手
Zoom のサポートサイトから x64 Windows 向け MSI インストーラー (ZoomInstallerFull.msi) をダウンロードしました。
https://support.zoom.com/hc/ja/article?id=zm_kb&sysparm_article=KB0060418
ii. パッケージング
参考:Prepare Win32 app content for upload
今回必要な処理は msiexec コマンドのログオプションを使って 1 行で記述できるので、特にスクリプト等々かませずに ZoomInstallerFull.msi ファイル単体をパッケージングしました。
iii. 「Windows アプリ (Win32)」新規アプリ作成
参考: Add, assign, and monitor a Win32 app in Microsoft Intune
以下が当検証環境で利用しているパラメータ例です。
(Win32アプリとしての必須項目、および要件実現に関連する項目に絞って記載します。その他の設定項目の利用は任意です。)
MSI インストーラーはパッケージから Intune がプロダクトIDを取得できるので一部項目が自動で設定される点非常に便利です。
# | 大項目 | 中項目 | 既定値 | 設定値 | 備考 |
---|---|---|---|---|---|
1 | アプリ情報 | ファイルの選択 | - | ZoomInstallerFull.intunewin | ii. で作成したパッケージを選択 |
2 | アプリ情報 | 名前/説明 | Zoom (64-bit) | Zoom (64-bit) | 展開動作には関係ないので既定値を採用 |
3 | アプリ情報 | 発行元 | - | Zoom | - |
4 | プログラム | インストール コマンド | msiexec /i "ZoomInstallerFull.msi" /qn | msiexec /i "ZoomInstallerFull.msi" zConfig="AU2_EnableAutoUpdate=1" /qn /norestart /log %temp%/%computername%-zoom-install.log | ログオプション利用。"%computername%*.log" を "C:\Windows\Temp" 配下に出力する! |
5 | プログラム | アンインストール コマンド | msiexec /x "{C11BB445-1C38-4FD5-9CD1-1D075C697E3A}" /qn | msiexec /x "{C11BB445-1C38-4FD5-9CD1-1D075C697E3A}" /qn | 正しいコマンドのため既定値採用 |
6 | プログラム | インストールの処理 | システム | システム | システムコンテキストで実行時、%temp% = "C:\Windows\Temp" となる |
7 | プログラム | デバイスの再起動 | アプリのインストールによるデバイスの強制的な再起動を許可する | 何もしない | 再起動不要なタイプのアプリ& /norestart 利用のためここの設定も合わせる |
8 | 必要条件 | オペレーティング システムのアーキテクチャ | - | x64 | x64 向けインストーラーのためここの設定も合わせる |
9 | 必要条件 | 最低限のオペレーティング システム | - | Windows 11 21H2 | - |
10 | 検出規則 | 規則の形式 | - | 検出規則を手動で構成する | - |
11 | 検出規則 | 種類 | - | MSI | |
12 | 検出規則 | パス・コード | - | {C11BB445-1C38-4FD5-9CD1-1D075C697E3A} | Intune により自動的に検出されたProductCodeを利用 |
13 | 検出規則 | MSI 製品のバージョンの確認 | - | いいえ | - |
14 | 割り当て | 登録済みデバイスで使用可能 | - | <グループ> | 必須割り当てでも可 (この場合はPushインストールとなる) |
2) アプリインストール
参考: Install and share apps on your device
「登録済みデバイスで使用可能」割り当てを利用しているため、Company Portal (デスクトップアプリまたはWeb版 (portal.manage.microsoft.com
)) からユーザー操作によりインストール (Pullインストール) します。
「必須」割り当て利用の場合、デバイス上で Intune Management Extension エージェントが 1 時間周期でアプリの割り当て有無を確認・インストール処理を実行します。
(参考:Win32 app management in Microsoft Intune)
検証で 1 時間周期を待っていられない場合は、デバイスを再起動または「Microsoft Intune Management Extension」サービスを再起動するとアプリポールをトリガーすることができます。
i. プル インストール
参考: Install and share apps on your device
ii. ログ確認
インストール実行後、デバイス ローカル上で狙い通り「%computername%*.log」ファイルが「C:\Windows\Temp」 配下に出力されていることが確認できます。
2. 「デバイスの診断」実行
参考: Collect diagnostics from a Windows device
アプリのインストールは、「本来成功するはずが謎に失敗する」場合があります。
謎解明のため、情シス担当者様は備えとしてログを出しておく対応を取られていると思います。
今回インストールは成功していますが、仮に失敗したとして、備えのため用意したログを管理者が確認する必要がある、とします。
マスタやキッティング工程でインストールに失敗した場合は管理者の手元に端末がありますが、Intune 利用環境だとユーザーがフレキシブルなハイブリッドワーク状態にあり端末にすぐリーチできない場合が往々にしてあります。
こんなときユーザーにメールなどでのログ連携を依頼してもいいですが、今回ログ設計をした私たちには「デバイス診断」を使うというオプションがあります!!
1) 「デバイスの診断」実行
i. デバイス アクション実行
ユーザーからのヘルプコールまたはアプリレポート (後述) にてアプリインストールに失敗したデバイスを特定します。
Intune 管理センター (intune.microsoft.com) > [デバイス] より対象デバイスのページに飛び、[診断の収集] > [はい] をクリックします。
デバイス上でデータが収集されアップされるまで少々かかるので、コーヒーでも飲みながら待機します。
待機時間は20分前後が目安になるようです。 (これ以上待たされるようであればデバイスがオフラインなど、アクションを完了できない理由がある)
ii. ログ確認
今回は10分強ほど待ったのち、[最新の情報に更新] を押下するとステイタスが「完了」になりました。
[ダウンロード] > [はい] をクリックすると「DiagLogs-<デバイス名>-<日時>.zip」ファイルがダウンロードできます。(管理者が Intune 管理センター接続に利用している作業用端末の任意の場所にダウンロードします。)
「DiagLogs-<デバイス名>-<日時>.zip」ファイルを解凍すると、以下のようにデバイスローカル上で取得されたデータがずらっと並びます。
この中から、「(87) FoldersFiles windir_temp_computername_log」フォルダを開きます。
アプリインストール処理工程で作成された「%computername%*.log」ファイルがあります!
今回はインストールに成功しているので「Installation completed successfully.」でログが終わっていますが、インストール処理のどこかでエラーが起きている場合はこのログ上で確認することができます。
以上、ログ出力場所・ファイル名への一工夫と「デバイスの診断」アクションを合わせることで、リモート環境のデバイスログをIntune 管理センターにアップし、解析することができました。
2) ご参考:テナント設定
参考: Disable device diagnostics
「デバイスの診断」アクションの利用前提として、公開情報に記載されているようにテナント上で診断が有効になっている必要があります。
なお、テナント既定設定では「有効」になっており、何もしなくても「デバイスの診断」を使える状態です。(無効にすることもできます。)
3) ご参考:通信要件
参考: Requirements
「デバイスの診断」アクションの利用前提として、公開情報に記載されているように通信要件があります。
For diagnostics to be able to upload successfully from the client, make sure that the following URLs are not blocked on the network:
lgmsapeweu.blob.core.windows.net
lgmsapewus2.blob.core.windows.net
lgmsapesea.blob.core.windows.net
lgmsapeaus.blob.core.windows.net
lgmsapeind.blob.core.windows.net
ご参考:その他の手段
これまで、アプリ インストール ログをどのように Intune 環境で実装するか? という点を記載しました。
これとは別に、Intune では標準機能の範囲で管理センター上にレポートが用意されている他、デバイス上でアプリインストール処理を実行する Intune Management Extension (IME) エージェントにもログがあるので、以下にまとめます。
成功確認であれば、Intune のアプリレポートで十分です。
失敗のトラブルシュートには IME ログや先述のアプリ インストール ログが適しています。
1. Intune アプリ レポート
Intune 管理センター上のアプリレポート画面です。
アプリ単位でデバイス毎・ユーザー毎のインストール成否のレポート確認や、失敗率をモニターすることができます。
標準機能範囲のため、設計・設定不要で利用可能です。
以下、よく使う順に並べます。
1) Device/User Install Status report for apps (Operational)
参考:
- Device Install Status report for apps (Operational)
- User Install Status for apps report (Operational)
ポータルパス: Microsoft Intune 管理センター (intune.microsoft.com) > [アプリ] > [すべてのアプリ] > (一覧からアプリを選択) > [デバイスのインストール状態]/[ユーザーのインストール状態]
2) Managed Apps report (Organizational)
参考: Managed Apps report (Organizational)
ポータルパス: Microsoft Intune 管理センター (intune.microsoft.com) > [デバイス] > [すべてのデバイス] > (一覧からデバイスを選択) > [管理対象のアプリ]
3) App Install Status report (Operational)
参考: App Install Status report (Operational)
ポータルパス: Microsoft Intune 管理センター (intune.microsoft.com) > [アプリ] > [モニター] > [アプリ インストールの状態]
2. Intune Management Extension ログ
参考:
- Intune management extension logs
- Troubleshoot Win32 app issues
- Support Tip - Understanding the flow behind deployment, delivery, and processing of a Win32 application through Intune
デバイス ローカル上に出力される、Intune Management Extension (IME) エージェントの処理ログです。
IME ログは Win32 アプリ以外にも、ストアアプリ展開・PowerShell展開・修復 (旧称プロアクティブな修復) の処理確認にも使えます。
なお残念ながら IME 単体の公開情報は存在していません。(2024 年 1 月現在。結構サイレントで更新があるので今後もページ作成されない可能性が高いと思います。)
ログの詳しい読解方法も公開情報がありませんが、アプリの処理フローを念頭に数こなしていると法則性があるため十分トラブルシュートに使うことができます。
玄人向けなので、訓練された Intune 担当か Microsoft クラウドサポートが使うものになります。
パス: C:\ProgramData\Microsoft\IntuneManagementExtension\Logs
なお、IME ログは「デバイスの診断」でアップされるデータに含まれます! (朗報)
なので、実質管理センター上からも確認することができます。
さいごに
本記事では、アプリのログ出力にできる一工夫と、Intune 標準機能範囲で利用可能なレポート・エージェントログについてまとめました。
私個人としてはアプリ検証時は必ず IME ログを確認しており、トラブル時も立ち返って確認するようにしています。
極めて稀ではありますが、IME がコンテンツダウンロード中にタイムアウトしたり暗号化されたコンテンツの複合に失敗したりすることもあり、こうしたアプリの設定や端末状態に起因しない不運な失敗は、IME ログを見て初めて見つけられるからです。
(Intune 上のアプリ設定不備や端末条件による失敗も IME ログで分かります。)
ただし、IME の更新によりログの見え方が変わることもあり、なかなか運用マニュアルとして文書化しにくい領域でもあります。
また、インストールコマンドの実行結果は成功 (IpExitCode 0) または 失敗(定義のないリターンコードの場合) しか取れないという点は弱点と思います。
Intune の標準機能で提供されるレポートは IME の結果がデバイスから Intune サービスに連携されそれがグラフィカルになったもののため、IME と同様にインストールコマンド実行中の細かい処理結果についてはレポートすることができません。
その点を msiexec コマンド標準のログオプションやスクリプトで作りこむログはカバーすることができます。
こうしたログの確認は Intune の機能範囲で対応できないトラブルの特定につながり、アプリの仕様と Intune の仕様をスクリプトで繋ぐ必要がある場合は貴重な情報源になります。
IME ログはアプリベンダーに連携できません (受け付けてもらえない) が、アプリインストーラーが吐く処理ログであればベンダーに連携し意見をもらうこともできます (サポート契約がある場合)。
また、Intune 以前からこうしたログを使われている場合、継続利用することで、企業情シス担当者様が慣れ親しんだ方法でのトラブルシュート運用を継続することも可能になります。
以上総合して考えると、アプリのインストールログがないと対処できないこともあり。備えておくと安心ですね!
今回は「デバイスの診断」機能で釣れることを証明したかったので「C:\Windows\Temp」 配下に「%computername%*.log」ファイルという形でログを出力しましたが、デバイスローカル上の他の場所にログを出力する形でも Intune のアプリ展開という観点では問題ありません。
カレントディレクトリにログ出力する処理だけ避ける必要があります。
Win32 アプリがインストールコマンドを実行する既定のディレクトリが C:\Windows\IMECache\<アプリID>_<パッケージバージョン№>
下であり、処理完了後に <アプリID>_<パッケージバージョン№>
フォルダごとコンテンツが削除されるからです。
インストールコマンドまたはスクリプトでディレクトリを指定する/移動する処理に置き換える必要があります。
Let's win app log and win app deployment!
最後にログは勝つ!!
-
Windows Autopilot では、OEMプロバイダー (DELL, Lenovo など) のマスタサービスによるアプリのイメージ組み込みはサポートされますが、SIerや一般企業の情シス担当者により作成されたマスタの利用はサポートされていません。後者の場合は OEM のマスタサービスを利用するか、Intune からアプリ展開する必要があります。また、Autopilot では従来のキッティングのようにデバイスデスクトップに管理者がサインインして手動で設定を適用することはできません。この場合も OEM のマスタサービスを利用するか、Intune からアプリ展開する必要があります。Autopilot を伴わない Intune 導入ではマスタもキッティングも従来のまま利用可能のため、Intune 経由のアプリ展開は必須ではありません。(必須ではないものの希望としてはよく聞きます。) ↩
-
Enterprise App Management のデモでは、インストールコマンドの編集が可能のように見えるため。この場合、本記事で例に利用した MSI アプリのようにログ処理まで 1 行で記述できる場合、インストールコマンドを書き換えることで「Windows アプリ (Win32)」と同じことを「Windows catalog app (Win32)」でも実現できることになる。(参考:Introducing Microsoft Intune Enterprise App Management, Navigate the future of Enterprise Application Management with Intune) ↩