Windows Autopilotで肝になるのがアプリ配信です。配信するアプリといってもいくつか種類があり、exeやmsiであれば比較的容易ではありますが、自社開発している業務システムがある場合は、該当システムもサイレントインストールできる必要があり、そのために改修する必要がでてくるからです。ここでは独自開発された業務システムなどを除いた、exeやmsi、そのほかにMicrosoftBusinessストアを利用したアプリの配布、Powershellの実行やファイル配布について記載します。これらは自由度の高い機能で品質更新プログラムの配布なども可能です。
配信するアプリと言っても広義の意味で表現があいまいですので、この記事で記載するアプリは以下です。
0.とにかく実行するPowershell
1.exeやmsiなどのインストーラー
2.Microsft Storeからインストール可能なUWPアプリ
3.設定変更(レジストリ)やファイル配布(KB含む)を目的としたPowershell
0.のPowershellについて解説します。
が、Powershellと言っても実行方法は2種類あります。1つ目は「デバイス」ペイン(ブレード?)に存在する「スクリプト」機能で上記の0.に該当します。もう1つは3.に該当するPowershell実行だけではなくファイル配布などもできる方法です。ここでは0.について記載します。
※「デバイス」→「Windows」→「Powershell スクリプト」と同じ
Microsoft Intune で Windows 10/11 デバイスに PowerShell スクリプトを追加する | Microsoft Docs
上図のPowershellスクリプトは割り当てしたグループに対して、Powershellを実行します。そのため、必ず実行したい、なおかつ複雑な処理はしない場合に適していますが、インストール判定や成功判定をしたい場合にはPowershellスクリプト内にエラー処理を実装する必要があります。実行事態は単純ですが、スクリプト自体は複雑化していく傾向にあります。
次に1.のexeやmsiなどのインストーラです。
Docsを読めば基本的に困ることはないかと思いますので、Docsを以下に記載します。
Microsoft Intune での Win32 アプリの管理 | Microsoft Docs
簡単に説明すると、流れとしては以下の通りです。
1.サイレントインストールコマンドとアンインストールコマンドを確認
2.実行の前提条件と成功確認するための検出規則を検討
3.intunewin変換ツールをgithubからダウンロード
4.exeやmsiをintunewinファイルに変換
5.サイレントインストールコマンド、前提条件と検出規則を使ってアプリに登録
6.Autopilotで動作確認
1.サイレントインストールするコマンドを確認
exeはインストーラによってオプションが異なるケースもあるようですが、だいたいは/sや/quietなどのオプションでサイレントになります。詳細はhelpコマンドを使って確認してください。msiならmsiexec.exeでインストールオプションを確認できます。
インストール/アンインストールコマンドを入力したら、リターンコードのによる処理を定義して完了です。
2.実行の前提条件と成功確認するための検出規則を検討
前提条件にはOSバージョンやメモリのほか、任意のファイル有無やレジストリ有無を確認する対象にできるほか、スクリプトを使っても制御することが可能です。非常に便利で「スクリプト」では煩雑になるものがポータル上からぱっと見で分かる可読性という観点では優れているかもしれません。
検出規則はインストールした後に正しく処理されているか、インストールが実施されているPCか否かを確認するために利用されます。こちらも前提条件と同様にファイル有無やレジストリのほかスクリプトなども利用可能です。msiなどであればUninstallのレジストリ有無を参照させることが多いですが、判定用の空ファイルを作るのも一般的です。私の場合はflgやtagといった拡張子で空ファイルを作成し、隠しフォルダに置くようにしています。
例:C:¥ProgramDataやC:¥Autopilotなどにwin32アプリ名のフォルダを配置
隠しフォルダにするのは前述したとおり、検出規則の判定ファイルがあるためで、ユーザーの誤操作などで削除されてしまうと、インストールされていないと判断されることによりIntuneが再配布してしまうことを防ぐためです。
例ですが、社内イントラサイトのショートカットリンクを常にデスクトップへ配置したいのであれば、Publicフォルダにファイルを配置、検出規則にはPublicにショートカットリンクがあることとすれば、原則消すことができない動作を再現できます。一方でユーザーによっては、該当ファイルを削除してデスクトップを綺麗にしたいことも考えられますので、再配布されないように上記フォルダにflgファイルを作っておくなど(上記フォルダであればショートカットリンクが削除されても、flgファイルが削除されない限り再配布されない)、ユーザーのリテラシーによっても実装方法が異なってきます。そのため、検出規則は各自検討いただければと思います。
3.intunewin変換ツールをgithubからダウンロード
上記したDocsにも記載されておりますが、以下にもダウンロードサイトを記載します。
GitHub – microsoft/Microsoft-Win32-Content-Prep-Tool: A tool to wrap Win32 App and then it can be uploaded to Intune
上記URLにアクセスし、CodeからDownload ZIPでOKです。
4.exeやmsiをintunewinファイルに変換
詳細な使い方はREADMMEなどで確認できますので割愛しますが、簡単に説明しておくと、インストーラ(exeやmsi)とインストールコマンドを記載したbat、Powershell、vbsなどをintuunewinに変換するフォルダへ配置、変換ツールを実行して変換対象フォルダ、スクリプトファイルの指定、intunewinの出力フォルダを指定するだけです。これでアプリ登録の準備が完了します。
また、KBをAutopilot中に適用したい場合にも同様の手順で実装可能ですが、このアプリ配布はAutopilotが実行されてから適用されるものですので出荷状態(Autopilot開始前)のPCに適用できるわけではないことはご留意下さい。
ちなみに私はいろいろ試行錯誤しながらintunewinを動作確認していたため、毎回上記を入力するのがめんどくさくなり、IntuneWinAppUtil.exeを実行してintunewinを作るbatを作ってました。あとは、intunewinファイルは拡張子をintunewinからzipなどに変更すれば、xmlのメタデータくらいは見えます。このintunewinの中身は何だろう。と思った場合は解凍可能です。
5.サイレントインストールコマンド、前提条件と検出規則を使ってアプリに登録
ここまでに確認してきた内容をIntuneに登録します。下図の通りアプリ機能からWindowsを選択して、アプリを「追加」します。
アプリを使いする際にはいくつか選択することができますが、この方法ではその他の「Windows アプリ(win32)」を選択してください。他は後述します。
あとは、これまでの手順で確認した内容を入力するだけです。ちなみに私はインストールコマンドをおまじない的に以下で記載しています。ただし中には、powershell.exeで呼び出すとうまくいかないコマンドレットもあるので、実行に失敗する場合には32bitのPowershellをフルパスで呼び出してください。
powershell.exe -executionpolicy Bypass -file .\hogehoge.ps1
6.Autopilotで動作確認
適宜テストグループなどに割り当ててAutopilotを実行してください。ちなみに、Autopilot対象とする動的グループと同じグループを使っているとアプリの割り当てがうまくいかないことがあります。この場合はESPの設定でインストールアプリを全て明示的に指定すればインストールできることを確認しています。検証などで頻繁にAutopilotをする場合はタイミングの問題なのか、アプリ割り当てがうまく行われず発生するケースがありますので、上記参考にしてください。
Win32アプリの補足
アプリから「追加」する際に、選択可能な項目についても補足します。
・Microsoft Storeアプリ:よくわかりません。
・Microsoft 365アプリ:Officeをインストールすることが可能で、GUIで更新チャネルやインストールバージョン、インストール対象をカスタムすることができます。また、xmlファイルを使ってOfficeのインストールを制御することも可能です。
・Webリンク:使ったことはないですが、リンクをファイルを配布できるようです。私はいつもwin32アプリで配布しています。
・基幹業務アプリ:企業で使っているアプリの実ファイルをこの形式で配布することができるようです。実際に試したことはないですが、この機能を使って「ポータル サイト」は配布したことがあります。使い方は以下のDocsを参照ください。
ビジネス向け Microsoft Store または教育機関向け Microsoft Store へのサインアップ (Windows 10) | Microsoft Docs
ほかにアプリをMicrosoft Store for Businessから指定して表示させることも可能です。左記リンクから自社テナントのアプリ管理にアクセスし、オンラインかオフラインを指定して「管理」とするとIntuneポータル上に該当のアプリが表示されますので、該当グループに割り当てて利用することも可能です。
サイレントインストールになってよく見られるケースとしては、標準的な全社員が利用するアプリをAutopilotで配布し、MECMあるいはIntuneを利用したポータルサイトで各自必要なものをユーザーがインストールできるようにするケースです。管理者権限をユーザーに与えない企業では運用不可軽減の1手になりますのでご参考になれば幸いです。
機能更新プログラムの配信について
IntuneにはWindows10の機能更新と品質更新のプログラムを配信する機能が備わっています。
Intune での Windows 10/11 デバイスの機能更新プログラム ポリシーの構成 | Microsoft Docs
ただし、KBの配信でも記載したようにAutopilot前やAutopilot中に機能更新プログラムを配信することはできませんのでご注意ください。以下にDocsの制限事項を記載しておきます。
Windows 10 以降向け機能更新プログラムのポリシーは、Autopilot OOBE (out of box experience) 中には適用できません。 代わりに、デバイスのプロビジョニング完了後 (通常は 1 日)、最初の Windows Update スキャン時にポリシーが適用されます。
Intune での Windows 10/11 デバイスの機能更新プログラム ポリシーの構成 | Microsoft Docs