皆さんこんにちは。国井です。
アプリ展開のトラブルシューティング方法について以前に解説しました。
その中でWin32アプリとして展開するアプリに関してはIntune Management Extensionと呼ばれるサービスがクライアント側で動作して、そのログがIntuneManagementExtension.logに記録されるから、それを参照すればよいと話をしました。
しかしサービスリリース2408からこの仕様が変わり、IntuneManagementExtension.logの代わりにAppWorkload.logと呼ばれるアプリ展開専用のログができ、ここに記録されるようになりました。今回はこのログを参照しながら、トラブルシューティングするときに参照すべきポイントについて解説します。
サンプルアプリの展開
2024-25年版Intuneアプリ展開のトラブルシューティング の話の前に題材となるサンプルアプリについて紹介します。今回はLhaPlusというZIPの圧縮/展開ができるアプリをIntune経由でインストールします。このアプリは自動インストールができるアプリなのですが、あえて自動インストールができないアプリだと仮定してServiceUI.exe経由でアプリをインストールしてみたいと思います。
ServiceUI.exeとは
ServiceUI.exeとはアプリのMDTに含まれるツールで、もともとSYSTEMコンテキスト(管理者権限)で実行するプロセスをデスクトップ画面上で利用できるようにすることを目的としたもので、管理者権限を持たないユーザーのデスクトップ画面上でアプリケーションのインストールを行いたいというときに使われていました。
これをIntuneと組み合わせれば、Intuneから展開されるアプリをインストールする時にウィザード画面が出ちゃっても管理者権限でウィザードを操作できるというメリットがあります。今回はこれを使ってLhaPlusのセットアッププログラムであるLhaPlus174.exeを実行してみます。
ServiceUI.exe -process:explorer.exe LhaPlus174.exe
この1行を書いたバッチファイルをinstall.batとし、install.batとServiceUI.exeとLhaPlus174.exeの3つが入ったフォルダーをまとめてIntunewinAppUtil.exeからintunewinファイルを作ってみました。
これにより、Intuneからinstall.batを実行し、そこからServiceUI.exeが呼び出されて、LhaPlus174.exeのインストールが始まることになります。
アプリの展開
話が逸れてしまったので元に戻します。
上記のような構成のアプリを作ってIntuneからWin32アプリとして展開します。
今回は必須ではなく、利用可能にして展開します。必須でインストールしてしまうと、何時にインストールしたのかわからなくなってしまうのでポータルアプリから手動でインストール開始するようにしました。インストールが開始し、ウィザード画面が出てきたので、適当に次へを連打して完了させます。特に問題なくインストールも無事に終了しました。
ログ参照はじめ!
ここからが本番です。インストールが完了したら c:\programdata\microsoft\intunemanagementextension\logs フォルダーにアクセスし、AppWorkload.log ファイルを見てみます。前にも話したけどログを見るならMECMに付属するCMTraceツールがお勧めです (入手困難な方はメモ帳でもいいです)。
ファイルを開くと、まずはこんな感じのログを参照できます。
下の画面を参照すると、最初に application poller starts.. というログが見えますが、これがIntuneとの通信を開始しているところになります。「利用可能」で展開している場合、ポータルアプリからアイコンをクリックしてスタートしているので、その場合はひとつ前の行に Start available apps check-in.. というログが出ます。
いくつかのアプリを展開してしまっていて、どの部分を見れば良いかわからない場合はアプリのインストーラーのファイル名 (今回の場合はinstall.bat) を指定して検索すると近辺のログがヒットするので、そこから探していくとよいでしょう。
通信を開始し、情報を色々と取ってくる過程で Got 1 Win32Apps for.. というログが出力されます。これがインストール対象となるアプリの情報をIntuneから入手したぜ!というトピックになります。
その次の行を見ると Get policies=.. とありますが、ここには入手したアプリの詳細情報が入ります。ここを抜き出したものがこちらです。
c76ecb1a0b64″,”Name”:”lhaplus”,”Version”:1,”Intent”:1,”TargetType”:1,”AppApplicabilityStateDueToAssginmentFilters”:null,”AssignmentFilterIds”:null,”DetectionRule”:”[{\”DetectionType\”:2,\”DetectionText\”:\”{\\\”Path\\\”:\\\”C:\\\\\\\\Program Files (x86)\\\\\\\\Lhaplus\\\”,\\\”FileOrFolderName\\\”:\\\”Lhaplus.exe\\\”,\\\”Check32BitOn64System\\\”:false,\\\”DetectionType\\\”:4,\\\”Operator\\\”:1,\\\”DetectionValue\\\”:\\\”1.7.4.0\\\”}\”}]”,”InstallCommandLine”:”install.bat”,”UninstallCommandLine”:”install.bat”,”RequirementRules”:”{\”RequiredOSArchitecture\”:2,\”MinimumFreeDiskSpaceInMB\”:null,\”MinimumWindows10BuildNumer\”:\”10.0.14393\”,\”MinimumMemoryInMB\”:null,\”MinimumNumberOfProcessors\”:null,\”MinimumCpuSpeed\”:null,\”RunAs32Bit\”:false}”,”ExtendedRequirementRules”:”[]”,”InstallEx”:”{\”RunAs\”:1,\”RequiresLogon\”:true,\”InstallProgramVisibility\”:3,\”MaxRetries\”:3,\”RetryIntervalInMinutes\”:5,\”MaxRunTimeInMinutes\”:60,\”DeviceRestartBehavior\”:1}”,”ReturnCodes”:”[{\”ReturnCode\”:0,\”Type\”:1},{\”ReturnCode\”:1707,\”Type\”:1},{\”ReturnCode\”:3010,\”Type\”:2},{\”ReturnCode\”:1641,\”Type\”:3},{\”ReturnCode\”:1618,\”Type\”:4}]”,”AvailableAppEnforcement”:0,”SetUpFilePath”:”install.bat”,”ToastState”:0,”Targeted”:1,”FlatDependencies”:null,”MetadataVersion”:1,”RelationVersion”:0,”RebootEx”:{“GracePeriod”:-1,”Countdown”:-1,”Snooze”:-1},”InstallBehavior”:0,”StartDeadlineEx”:{“TimeFormat”:””,”StartTime”:”\/Date(-62135596800000)\/”,”Deadline”:”\/Date(-62135596800000)\/”},”RemoveUserData”:false,”DOPriority”:1,”newFlatDependencies”:true,”AssignmentFilterIdToEvalStateMap”:null,”ContentCacheDuration”:null,”ESPConfiguration”:null,”ReevaluationInterval”:480,”SupportState”:null,”InstallContext”:1,”InstallerData”:null,”AvailableAppRequestType”:0,”ContentMode”:null}] AppWorkload 2024/10/13 7:14:10 4 (0x0004)
見る気も起きないと思うので、ポイントだけ言っておくと
DetectionRule から始まる項目がインストールが完了したかを判断する項目になっています。今回の場合「Lhaplus.exeのバージョンが1.7.4.0だったら」という条件を入れているので、そのことが記載されています。アプリのインストール時の検出規則はアプリのインストール後だけでなく、インストール前にも行われており、既にインストール済みである場合には再インストールが行われないようにするための措置です。
続いてInstallCommandLine から始まる項目はインストールを開始するときに実行するファイルの名前を指定しているところです。ここではinstall.batを指定していることがわかります。
ダウンロード開始
インストールすべきアプリが決まったらダウンロードを開始します。
ダウンロードは Downloading app on.. で始まるログになります。
このログの行には97141430-.. で始まるIDがありますが、これは前に登場したログのGot 1 Win32Apps for.. の後ろに出てきた文字列と一緒ですね。
ダウンロードが完了すると download complete の文字列を含むログが生成されます。
(またはDO download and decryption is successfully done の文字列でも確認できます)
ちなみにダウンロードしたコンテンツはC:\Program Files (x86)\Microsoft Intune Management Extension\Content\incomingフォルダーに入ります。
Intunewinファイルのダウンロードが完了するとunzipを開始します。Intunewinファイルの実体ってZIPファイルなので、incomingフォルダーに入ったファイルを展開してC:\Program Files (x86)\Microsoft Intune Management Extension\Content\staging フォルダーに入るようになっています。
インストール開始
ログに Saved AppInstallStatusReport.. が出てきたらインストールの開始です。
ところが今回のログを見てもめぼしいもの見つけることはできませんでした。
なぜならばログに出力されるのはあくまで install.bat ファイルの実行結果であって、最終的にインストールされるアプリの追跡はできないんですよ。
ですから今回のようにinstall.bat → ServiceUI.exe → LhaPlus174.exe の順番に呼び出されてアプリがインストールされるケースだとログが残らないというのが課題になります。
代わりのログでインストールの追跡をしてみましょう
ということなので、この後に出てくるログについては7-zipをインストールしたログを持ってきましたので、それを見ながら確認しましょう。
===Step===Execute retry 0 から始まるログから少し下に下がるとインストーラーの実行プログラムとインストールオプションが書かれていることがわかります。
このコマンドを実行してアプリケーションのインストールが始まり、特にインストールエラーがなければ特別なエラーコード (リターンコード) を返すこともなく完了します。
検出ルールのチェック
インストールが終わると検出ルールに沿ってインストールが正しく完了したかのチェックを行います。それが ===Step=== Skip detection rules after Execution というログです。
チェックが完了すると成功したことをIntuneにお知らせし、インストールが完了します。
ここまでの一連のプロセスが完了すると最後に —– application poller stopped. ——-というログを出力して終わります。
おまけ
アプリをインストールするとダウンロードが始まったとか、インストールが成功したとか通知がデスクトップ画面上に出てきます。
これはToast Messageと言って agentexecutor.exe がその制御をしています。ログでもご覧のような形で参照できます。Toast Messageはダウンロードが始まったとか、インストールが成功したとか通知してくれるので、そのタイミングがダウンロードが始まったんだな、などとログを見ていくこともできます。
ですので agentexecutor.exe という名前で検索してインストールの推移を追跡していくのもやり方としてはアリと思います。
■ ■ ■
最後になりますが、2024年11月9日にひと目でわかるIntune第3版の発売を記念して勉強会を開催する予定ですが、そこではこのログを実際に見てもらう会を開こうかなと思っています。
お楽しみに!