🕌

Intune の「診断情報の収集」を利用したトラブルシューティング

4 min read

Intune に2021年3月に追加された「診断情報の収集」では Windows デバイスから各種ログを収集しトラブルシューティングを行うことができる。

この記事では、「診断情報の収集」を利用し、 Intune Management Extension 経由でインストールされる Win32 アプリケーション(.intunewin ファイルで配布するもの)のトラブルシューティングを例に、「診断情報の収集」の使い方の概要を取り上げる。

収集したログにはネットワーク情報などのセキュリティに関する情報が含まれることがあるので注意しましょう。

ログ取得

Windows デバイスから診断情報を収集する に記載の通りだが、概ね下記の手順。

  1. Microsoft Endpoint Manager admin center (Intune ポータル)から目的のデバイスを選択し、 Overview にある Collect diagnostics > Yes を選択する。
  2. デバイスの Device diagnostics に移動すると収集状態が確認できるので、 Pending diagnostics uploadComplete になるまで待つ
  3. 収集が完了すると Download ボタンが表示されるのでクリックしてダウンロードする

Intune は診断情報をあらかじめ保管しているわけではなく、上記の操作を行ったときに情報を収集する。
そのため、PCが起動しており、Intuneとの接続が行われるタイミングでしか診断情報のアップロードが行われないことに注意する必要がある。

ダウンロードしたログの確認

ログは DiagLogs-(Device Name)-(Timestamp).zip という名前の ZIP ファイルでダウンロードされる。

これを解凍すると 1~50 のフォルダと results.xml ファイルが入っている。

results.xml には各フォルダに含まれる内容が記載されている。フォルダの番号順・XMLでの記載順・Windows デバイスから診断情報を収集する#収集されるデータ での記載順は同じとなっている。

見やすくするため下記のバッチファイルを(個人的に作って)利用している。

https://gist.github.com/nayuta/13ea84091169ced73970b77e254d238f

実行後はこのようになる。(本来なら XML ファイルをパースしないといけないが変更時にはバッチファイルを修正すればよい。)

トラブルシューティングの例

今回のトラブルシューティングの例では、 Visual Studio C++ 2015 再頒布可能パッケージを配布したところ、インストール時にエラーが出る、という状況を例に簡単な手順を記載する。

Visual Studio C++ 2015 再頒布可能パッケージは exe ファイルで配布されており、 Intune では Win32 アプリ(.intunewin ファイル)として配布する必要がある。(Microsoft Intune での Win32 アプリの管理 参照)

Visual Studio C++ 2015 再頒布可能パッケージには複数のバージョンがあり、リリース時期によって MSI の product code が異なるインストーラーが利用されている。
そのため、 Intune の Windows app (Win32) の Detection Rules で MSI product code を使用した検知を行うと「違うバージョンが存在しインストールに失敗した」というエラーが出る。

デバイス側でのエラーメッセージ例:

Intune に表示されるエラー:

(Another version of this product is already installed. と表示されている。)

この時、

  1. 違うバージョンがインストールされていてもインストールを成功とみなす
  2. 検知ルールを変更してバージョンが違ってもインストールされているとみなす

の2つの対応が必要になるが、今回は 1 を取り上げる。

インストーラーの動作の調査

MSI の動作を知っていれば特に問題なくパラメーターを設定するだけだが、知らない場合にはどのような動作をしているか調べる必要がある。

その際に Intune でログを収集し、 Intune Management Extension のログを確認すると手間を減らすことができる。

上記で収集したファイルの 39 に Intune Management Extension のログが入っているので、そこから intunemanagementextension.logCMTrace で開く。

ここで vc_redist.x86.exe を検索し、 exit code を探す。今回はすぐ近くに下記のようなログが見つかった。(下記は対応後のログを改めて取得したものなのでエラーとして表示されていない。)

今回はこれを Intune 側で成功した exit code として設定すればよい。

追加で必要な調査

なお、再頒布可能パッケージの異なるバージョンは異なる MSI として配布されているため、 MSI product code でインストール検知をしている場合、インストール後に検知ができなかったというエラーが発生する。

これに対しては Microsoft Developer Network の Community などの情報を参考に設定を修正する必要がある。

まとめ

Intune の「診断情報の収集」の簡単な使い方、実際のトラブルシューティングでの例を記載したが、この機能を活用することにより、実際に稼働しているデバイスを物理的に回収することなく、必要なログを取得することができる。

収集できるログはあらかじめ指定されているため、収集対象とならないログなどは別途収集手段を整えるか、デバイスを直接操作する必要があるが、緊急時にはデバイスの改修が必須とはなるが、一般的なトラブルシューティングには十分利用できるかと思う。

収集したデータにはネットワーク情報などのセキュリティ関連情報も含まれることに注意する必要がある。