Autopilotを使ったWindowsPCの構築

はじめに

皆様お久しぶりです。以前に DirectConnectAristaリプレイス で記事を書かせて頂きました、インフラのTK改め kawatatsu と申します。
今回はWindowsPCの構築を行うため、Intuneの一機能である Autopilot について説明します。
Autopilotを利用することでPCの初期構築をある程度自動化することができます。

WindowsPCのキッティング

Autopilotの説明をするにあたり、WindowsPCのキッティング、初期設定ってどういうものがあるのだろう?と思われるかも知れないので軽くお話しします。
PCを購入した後に起動すると、ユーザー作成やMicrosoftアカウントとの紐づけ、プライバシーの設定といった、設定を利用者が行う必要があります。
会社のPCとなると、ActiveDirectoryと連携してユーザーとデバイス管理を行っている企業様もいるのではないでしょうか?
弊社では予め必要な設定がされており、ActiveDirectoryに所属していて、必要なソフトがインストールされている状態のPCをユーザーへ配布しております。
WindowsPCのキッティングについて従来の方法とAutopilotでの構築について見ていきましょう。

従来のキッティング

企業などで利用するためにWindowsPCを何台も用意する場合、Windowsが提供している仕組みとしてはマスターイメージを作成し、それを他PCに適用することで量産していく方法があります。
このマスターイメージにはWindowsの設定、ソフトウェア・アプリ、ドライバ、ポリシーなどのインストールが行われたものを1つのイメージとして作成し配布します。
この手法の場合、最初の1台で設定を作ってしまえば、後はWindowsの展開サービスでイメージを流すことで以降のPCは特に設定を行う必要が無いので、展開サービスへDHCPで到達できるネットワークにキッティングするPCを繋いでネットワークブートを行うことでキッティングが完了します。
もちろんキッティング後の確認は必須ですが、一台一台手打ちで設定を行う必要からは解放されます。

Autopilot を利用したキッティング

Autopilotでのキッティングの考え方は従来のキッティングとは異なります。
従来のキッティングは設定、アプリなどをまとめた一つのイメージを配布する方法でPC毎に設定を変更する場合、別のイメージを作るか、キッティング後にActiveDirectoryなどで設定、ポリシーを配布する必要があります。
しかし Autopilot では、設定、アプリを端末毎(厳密にはグループ単位)で配布します。
これにより端末毎にインストールしておくソフトや、組織ごとのポリシー配布などを行うことができます。
Autopilotの展開は、Autopilotデバイスとして登録した端末を初回起動時にインターネットに接続することで、Autopilot展開を始めることができるため、リモートワークも普及してきた昨今、会社で購入したPCをメーカー、ベンダーから直接ユーザーへ郵送し、ユーザーがPCを起動してインターネットに繋ぐことで自動的に設定がされるということもできます。
これは今までPCをキッティングしていた業務から解放されるため、PCの準備に使っていた時間を別のことに利用できるようになります。

AutopilotでPC構築する方法

  1. Autopilotでキッティングするデバイスの登録
  2. デプロイプロファイルの作成と割り当て
  3. WindowsPCの初期化と起動

Autopilotでの展開は上記3つです。

Autopilotでキッティングするデバイスの登録

Autopilotを使ってキッティングする端末をAutopilotデバイスとして登録します。
登録にはハードウェアハッシュの取得が必要となり、取得する方法は以下のURLの方法があります。
autopilotデバイス登録
今回はデバイス情報を登録するにはPowershellを使ってハードウェアハッシュの取得を行います。

New-Item -Type Directory -Path "C:\HWID"
Set-Location -Path "C:\HWID"
$env:Path += ";C:\Program Files\WindowsPowerShell\Scripts"
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
Install-Script -Name Get-WindowsAutopilotInfo
Get-WindowsAutopilotInfo -OutputFile AutopilotHWID.csv

C:¥HWIDに出力された AutopilotHWID.csv をアップロードし、Autopilotデバイスとして登録します。

デプロイプロファイルの作成と割り当て

Autopilotは最初に書いたようにIntuneと呼ばれるMicrosoftのMDMの機能のため、Autopilotで行えることは以下の機能のみとなります。

  • 配置モード
    • ユーザードリブン
      • ユーザーとPCが紐づく
      • この設定でキッティングを進めていくと Azure AD Join となる
    • 自己展開(プレビュー)
      • ユーザーとPCは紐づかない
      • この設定でキッティングすると Azure AD Register となる
  • AzureADへの参加の種類(配置モードが自己展開の場合は選択できない)
    • Azure AD Join
    • Hybrid Azure AD Join
  • マイクロソフト ソフトウェア ライセンス条項
  • プライバシーの設定
  • アカウントの変更オプションを非表示にする
  • ユーザー アカウントの種類
  • 事前プロビジョニングされたデプロイを許可する
  • 言語(リージョン)
  • デバイス名のテンプレートを適用する

WindowsPCの初期化と起動

Windowsの設定→更新とセキュリティ→回復よりWindowsを初期状態にすることができます。
その際に回復ボリュームがないと言われた場合は以下のコマンドにて回復ボリュームを有効化します。

### Windows回復環境の確認
PS C:\> reagentc /info
Windows 回復環境 (Windows RE) およびシステム リセット構成
情報:

    Windows RE の状態:         Disabled
    Windows RE の場所:
    ブート構成データ (BCD) ID: 00000000-0000-0000-0000-000000000000
    回復イメージの場所:
    回復イメージ インデックス: 0
    カスタム イメージの場所:
    カスタム イメージ インデックス: 0

REAGENTC.EXE: 操作は成功しました。

### Windows回復環境の有効化
PS C:\> reagentc /enable
REAGENTC.EXE: 操作は成功しました。

PS C:\>

ポリシー、アプリの配布

Autopilotの設定では上記の構成プロファイルの設定しか行うことはできません。
ではアプリの配布、ポリシーの配布などはどのように行うのでしょうか?
アプリやポリシーの配布はAutopilotではなく、Intuneの機能を使って配布を行います。

Autopilotでキッティングした場合のアプリ、ポリシーの配布

AutopilotでキッティングしたPCにアプリやポリシーは最初から適用されていません。
初回起動時にインターネットより、構成プロファイル、アプリなどをダウンロードしてくることにより環境を整えます。
逆を言えば、ネット回線が低速だとPCが利用可能になるまで時間が掛かりますので、もし購入したPCをユーザーへ直接配送する場合ですと、後述する事前プロビジョニングを行うことを推奨します。
このアプリ配布、ポリシー配布はIntuneの機能であり、Autopilotの機能ではないため、AutopiliotでキッティングしていないPCに対しても、アプリやポリシーの配布を行うことができます。
AutopilotでキッティングしたPCの初回起動時には、このデバイス、ユーザーに紐づいたアプリがデスクトップにログインした時点で流れてきますのでインターネット接続が切れないようにする必要があります。
途中でPCの再起動やインターネット接続が切れた場合は一定時間後に再度インストール処理などが行われますが、体感で半日程待つ場合もありましたのでご注意ください。

おまけ:Autopilot の事前プロビジョニング(旧White Glove)

Autopilotで構築したPCは初回ログイン時にアプリのインストールが行われます。
アプリの数が少ない場合などは良いですが、予めサイズの大きいソフトウェアをインストールしておきたい場合や、ポリシーの適用などを済ませておきたい場合には、事前プロビジョニングを行うことでユーザーは初期設定を行った後にすぐにPCを使うことができるようになります。

事前プロビジョニングを行うには、構成プロファイルの設定で以下の要件を満たす必要があります。

  • 事前プロビジョニングされたデプロイを許可する
  • 言語(リージョン)をユーザーの選択にする
  • 言語(リージョン)がユーザーの選択以外の場合に出てくる、キーボードを自動的に構成するいいえ を選択する

キーボードを自動的に構成すると、事前プロビジョニングに入るためのキー入力を行える猶予がなくなるため、事前プロビジョニングされたデプロイを許可していても事前プロビジョニングが行えない状態となる。

事前プロビジョニングは初期状態からの起動後の言語選択、キーボードの指定時に Windowsキーを5回入力することでメニューに入ることができます。
その状態で Windows Autopilot provisioning を選択することで事前プロビジョニングを行うことができます。
事前プロビジョニングが完了すると、再シールすることができるので、再シールを行ったPCをユーザーに渡すことで、ユーザーはアプリやポリシーが予めセットされたPCで初期設定を行うことができます。
また、事前プロビジョニングでキッティングしたPCは、初期接続時にインターネット接続が必須となります。
これはPCの使用者が初めてPCを起動する際に、誤ってローカルアカウント作ることを制限するため、事前プロビジョニングしない場合で発生する、ローカルアカウントでユーザーを作成してしまう可能性を無くすことができます。

おまけの注意事項

Wi-Fi接続で事前プロビジョニングを行う(非推奨)

事前プロビジョニングを行うにはインターネット接続が必要ですが、Wi-Fiでの接続は非推奨となっていますので、有線での接続を推奨します。
Wi-Fiで行う場合は、Windowsキーを5回押す前の画面で、Shiftキー+F10で出る、コマンドプロンプト上で以下のコマンドを入力します。

start ms-availablenetworks:

すると接続可能なWi-Fiが右下から出てくるのでSSIDを指定するか入力して接続することでインターネット接続が行えます。

事前プロビジョニングの際にデバイスの登録から進まない

検証を行っていると、Intuneに登録されている端末を初期状態に戻してAutopilotで事前プロビジョニングすることもあります。
その際に Intune のデバイス登録を削除しておかないと既に登録済みのデバイスと競合して事前プロビジョニングが失敗しますので注意してください。

Azure AD Join の状態で Intune からデバイスを削除してしまった時の対処法

事前プロビジョニングの検証をおこなっていたときのことです。
先に書いた通り、事前プロビジョニングを行うには Intune からデバイスを削除しておかないといけないのですが、初期化する前にデバイスを削除してしまうと、PCにログインできなくなってしまいます。
これは Azure AD との連携が解除されたことWindowsとAzureADとの連携が解除されたことが影響です。
そうなるとログインできなくなってしまうため、次の手順で復旧を行いました。

  1. ログオン画面でshiftキーを押しながら再起動
  2. セーフモードでWindowsを立ち上げる
  3. Windowsボタンを右クリックしコンピューターの管理を選択
  4. システムツール→ローカルユーザーとグループ→ユーザーを選択
  5. ユーザーリストの空白部分を右クリックしてユーザーを作成
  6. グループを選択し、作成したユーザーをAdministratorsグループに追加する
  7. PCを再起動し作成したユーザーでログイン

ここまで行うことでPCを初期化するための作業を行うことができます。
もし再度Azure AD Join、Register を行いたい場合、Windows→設定→アカウント→職場または学校にアクセス から行うことが可能です。
最初はセーフモードで起動できなくなったので、PC自体をクリーンインストールしましたが、その後Autopilotで展開したデバイスで検証したところ、上記手順で復旧できたので安心しました。
もし Azure AD との連携が切れてログインできなくなった場合は落ち着いて上記の対応をしてみることをおすすめします。

最後に

文字がメインとなってしまい、ブログというよりも読み物みたいになってしまいが如何でしょうか?
Autopilotのことは伝わりましたでしょうか?
業務内で最近触るのは Azure AD 関連が多いですが、ゼロトラストの実現に向けて技術的な面での知識習得や理解が昨今のメイン業務となっています。
個人的にはネットワーク大好き人間なので Cloudflare Zero Trustを最近触ったりして自分のトラフィックの監視やデバイス毎の制限などを実感したりしています。

私の近況ばかりお話ししてもつまらないので最後に感謝を書いて締めさせて頂きます。
まず本ブログを書く機会を提供下さりました上長のYさん。
ブログの執筆にあたり書く内容について一緒に考えてくださったブログ運営の皆様。
最後にこの記事を最後まで読んでくださった方に最大の感謝を。
本記事が一部分でも誰かの役に立って頂けると嬉しいです。
以上となります。
私は書き物が苦手なため頻繁には執筆しないと思いますが、また機会がありましたらよろしくお願いします。