製品コラム
セイテクエンジニアのブログ 製品コラム これからのPCキッティング作業を変える最強コンビ、Windows Autopilot × SetROBO for Kitting(2/3)
2026年08月05日配信
執筆者:セイ・テクノロジーズ エバンジェリスト
セイ・テクノロジーズでは、システムの導入、運用、監視に役立つ各種製品・サービスを取り扱っています。その中から前回は、PCキッティング自動化ツールである株式会社アープの「SetROBO for Kitting」(以下、SetROBO)について紹介しました。今回は、SetROBOをMicrosoftのWindowsデバイス展開サービス「Windows Autopilot」とともに利用するポイントを解説します。
Windows Autopilotは、Microsoft Intune(P1以上)およびMicrosoft Entra ID(P1以降)のライセンスで利用できる、Windows 10/11デバイスのクラウドベースのデプロイサービスです。Windows Autopilotは、従来のクローニング技術にまったく依存せず、OEMプレインストールデバイスをクラウドから企業向けに構成します。デバイスの梱包を解いて電源をオンにし、組織のアカウント(Microsoft Entra IDまたはオンプレミスのActive Directoryと同期されたハイブリッドID)でサインインすると、企業クライアントとしてのデプロイが始まり、完了するとデスクトップが表示され使用を開始できます(画面1)。OEMプレインストールデバイスはOEMによって検証されたドライバーが導入済みで、Windowsがハードウェアに最適化されているため、汎用化されたイメージをクローニング技術で展開する方法よりも、導入後の安定した動作が期待できます。

画面1 Windows Autopilotによるデバイスのデプロイ(画面は新しいWindows Autopilotデバイスの準備《Autopilot v2》)
Windows Autopilotには2つの種類があります。従来からの「Windows Autopilot(Autopilot v1)」と、2024年6月から一般提供が開始された新しい「Windows Autopilotデバイスの準備(Autopilot v2)」です。Windows Autopilot(v1)は、Entra参加とハイブリッドEntra参加の両方に対応し、さまざまなシナリオに柔軟に対応可能です。Windows Autopilotデバイスの準備(v2)は、ハードウェアIDの事前登録が不要など、機能やエクスペリエンスが簡素化されており、Entra参加にのみ対応しています。便宜上、v1/v2と表現していますが、両者はバージョン違いというよりも、同じWindows Autopilotにおける別の展開方式であり、並行して提供されている異なる仕組みと考えてください。Windows AutopilotやIntuneの機能については、以下の連載記事でも詳しく解説しています。
「はじめてのIntune」シリーズの目次|かつて山市良とよばれたおじさんのブログ
「Windows Autopilot試乗会」シリーズ(連載中)|かつて山市良とよばれたおじさんのブログ
どちらのWindows Autopilotでデバイスをデプロイする場合でも、デプロイプロセス中にOOBE(Out-of-box experience)セットアップから、Intuneへのデバイスの登録、ポリシーやアプリの展開が行われ(一部のアプリはWindows Autopilotの後に行われることもあります)、ユーザーが初回サインイン時にWindows Update for Businessのセットアップを完了してデスクトップが表示されれば、すぐに利用を始めることができます。
しかし、IntuneやWindows Autopilotは万能ではありません。これらのサービスの標準機能では、企業のクライアントとしてのデプロイ要件を満たせない場合があります。例えば、サイレントインストールに対応していないアプリケーションの自動インストールです。IntuneやWindows Autopilotにユーザーの対話(ボタンのクリックや入力など)が必要なGUI操作を自動化する機能はありません。IntuneやWindows Autopilotのこの弱点は、SetROBOで補完することができます。SetROBOのセットアップパッケージの実行は、Intuneの標準機能で自動開始できるため、Windows Autopilotによるデプロイ後に、残りの設定をSetROBOが引継ぐことができます。
SetROBOのセットアップパッケージは、サインイン中のユーザーのデスクトップ上で再生されるため、Windows Autopilotでデプロイされたデバイスは次の状態になっていることが重要です。
サインインユーザーのコンテキストで実行されること(標準ユーザーではなく、管理者ユーザーであること)
ユーザーアカウント制御(UAC)の通知設定が最低レベルの「通知しない」またはUACが無効(非推奨)であること
なお、SetROBOのキッティング作業が完了したあとは、UACは既定の設定に戻すことができます(戻すことを推奨します)。その設定は、SetROBOのシナリオに含めることができます。
1つ目の要件については、従来のWindows Autopilot(v1)の場合はデプロイプロファイル、Windows Autopilotデバイスの準備(v2)の場合はデバイス準備ポリシーで、ユーザーアカウントの種類を「管理者(Administrator)」に設定します(画面2)。

画面2 Windows Autopilot(v1)のデプロイプロファイル(画面左)とWindows Autopilotデバイスの準備(v2)のデバイス準備ポリシー(画面右)の設定
2つ目の要件については、Intuneのプラットフォームスクリプトを使用して準備できます。それには、Windows 10以降用のプラットフォームポリシーを作成し、次の2行のコードを含むPowerShellスクリプトをアップロードして、システムコンテキスト(このスクリプトをログオンしたユーザーの資格情報を使用して実行する: いいえ)で実行するように設定し、Windows Autopilotの対象のデバイスグループに割り当てます(画面3)。このスクリプトは、レジストリを変更し、UACの設定を最低レベルの「通知しない」にします(exit 0はプラットフォームスクリプトの実行成功と判断されます)。システムコンテキストで実行されるプラットフォームスクリプトは、ユーザーのサインインなしで実行されます。
| Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "ConsentPromptBehaviorAdmin" -Value 0 -Type DWord exit 0 |

画面3 UACの通知設定を「通知しない」に設定するプラットフォームスクリプトとその設定
ヒント: 構成ポリシーによるUACの設定変更ではダメな理由UACの設定は、Intuneの構成ポリシー(設定カタログのLocal Policies Security Options|User Account Control Behavior Of The Elevation Prompt For Administrators: Elevate without prompting)で制御することもできますが、今回の設定はSetROBOのセットアップパッケージ開始用の一時的な設定であるため、構成ポリシーでは設定しません。構成ポリシーで設定すると、ポリシーが適用されるたびにUACの設定が「通知しない」になってしまい、デバイスのセキュリティが低下してしまうからです。 |
Windows Autopilotデバイスの準備(v2)では、デバイス準備ポリシーに(いずれもシステムコンテキストで実行される)最大25のアプリケーションのインストールと、最大10のプラットフォームスクリプトの実行を含めることができます(デバイスのデプロイ後はIntuneの機能で制限を超えるアプリケーションやスクリプトを展開できます)。UACの通知設定が次のセットアップパッケージの実行用スクリプトよりも確実に先に実行されるように、デバイス準備ポリシーに含めておくことをお勧めします(画面4)。ただし、通常、ユーザーログオンなしで実行されるシステムコンテキストのスクリプトは、ユーザーコンテキストのスクリプトよりも先に実行されるため、デバイス準備ポリシーへの組み込みは必須ではありません。

画面4 Windows Autopilotデバイスの準備(v2)では、デバイス準備ポリシーに、UAC設定変更のスクリプトを含めることができる(必須ではない)
SetROBOのセットアップパッケージはユーザーのデスクトップ上で実行する必要があります。その実行方法としては、ネットワーク共有からローカルに一時的にコピーして実行する、ZIPファイルに圧縮したものをWebからダウンロードしてローカルに一時的に展開して実行するなど、さまざまな方法を利用できます。
参考:
サーバ接続&コピー&SetROBO開始バッチサンプル|サポートページ|PCキッティング自動化ツール - SetROBO|株式会社アープ
※バッチファイル(.bat)なので、そのままではIntuneのPowerShellスクリプトとして使用できません
Intuneに登録されたデバイスに対しては、プラットフォームスクリプト(または検出/修復スクリプト)を使用して、事前にIntuneにアップロードしておいたPowerShellスクリプトをユーザーのコンテキストで自動実行させることができます。セットアップパッケージのルートにある「Setup.exe」を実行するまでの一連の操作をPowerShellスクリプトで記述し、Windows 10以降用のプラットフォームスクリプトとしてアップロードします。UAC用のスクリプトとは異なり、今回はユーザーのコンテキストで実行するように設定(このスクリプトをログオンしたユーザーの資格情報を使用して実行する: はい)して、ユーザーを含むユーザーグループ(またはユーザーがサインインするデバイスグループ)にこのスクリプトを割り当てます(画面5)。
以下のPowerShellスクリプトはサンプルです。このスクリプトは、ネットワーク共有をS:にマウントし、セットアップパッケージのフォルダーの内容を環境変数TEMPのSetROBOPlanサブディレクトリにダウンロードし、ダウンロード先からSetup.exeを実行後、最後に共有への接続を切断します。サインインしたユーザーで共有に接続できる場合は、「/user:$UserName $Password」の部分は不要です。SetROBOのセットアップパッケージは、ユーザーのデスクトップ上でシナリオを再生するため、スクリプトではSetup.exeを実行する前にデスクトップ(Explorerシェル)の起動後に60秒待機する処理を加えています。
$DriveLetter = "S:"
$UncPath = "\\コンピューター名\共有名"
$UserName = "ユーザー名"
$Password = "パスワード"
$SourcePath = "$DriveLetter\セットアップパッケージのフォルダー"
$SetupPath = Join-Path $env:Temp "SetROBOPlan\Setup.exe"
$ArgumentList = "/Archive `"$env:USERPROFILE\Desktop\SetROBOlog_$env:COMPUTERNAME.zip`""
try {
cmd /c "net use S: $UncPath /user:$UserName $Password /persistent:no"
if ($LASTEXITCODE -ne 0) {
throw "ネットワークドライブの接続に失敗しました。"
}
# SetROBO セットアップ パッケージのダウンロード
XCOPY "$SourcePath" $env:Temp"\SetROBOPlan\" /s /e /h /y
# デスクトップシェルの起動とWindows Hello for Businessセットアップ完了を待つ
do {
Start-Sleep -Milliseconds 500
$explorer = Get-Process explorer -ErrorAction SilentlyContinue
} until ($explorer -and $explorer.MainWindowHandle -ne 0)
# さらに60秒待機
Start-Sleep 60
# Setup.exe 実行
$process = Start-Process -FilePath $SetupPath -ArgumentList $ArgumentList -Wait -PassThru
if ($process.ExitCode -ne 0) {
throw "Setup.exe がエラー終了しました。(ExitCode=$($process.ExitCode))"
}
# クリーンアップ
Remove-Item -Path $env:Temp"\SetROBOPlan\" -Recurse -Force
# 成功
exit 0
}
catch {
Write-Error $_
exit 1
}
finally {
# 共有を切断
cmd /c "net use $DriveLetter /delete /y" | Out-Null
}
ヒント: Setup.exeのアーカイブ用ログ出力パラメーターSetROBOは既定でセットアップパッケージのWork¥Systemlog¥SAPlayer.log(プレーヤーのログ)およびData¥Log(シナリオの実行ログ)にログを書き込みます。セットアップパッケージのSetup.exeに/Archiveパラメーターに出力先(拡張子.zip)のパスを指定して実行すると、Data¥Logのログを指定したパスにアーカイブ(ZIP圧縮)出力できます。画面5のスクリプト(サンプルスクリプト)ではユーザーのデスクトップに出力していますが、実際の運用では共有フォルダー上のパスに出力してログを集約するとよいでしょう(それができるようにサンプルスクリプトでは共有の切断を最後にしてあります)。 |

画面5 セットアップパッケージを開始するスクリプト(この例ではネットワーク共有をS:ドライブにマウントし、セットアップパッケージのSetup.exeを実行、終了したらマウントを解除するスクリプト)を、ユーザーのコンテキストで実行するように設定する
ヒント: プラットフォームスクリプトと検出/修復スクリプトシステムコンテキストのプラットフォームスクリプトは、ユーザーのサインインなしでシステムアカウントで実行されますが、ユーザーコンテキストのプラットフォームスクリプトはユーザーのサインイン後に実行されます。そのユーザーのアカウントの種類が「管理者」である場合は、管理者トークン(フルトークン)で実行されます。プラットフォームスクリプトは、一度実行されると、スクリプトまたはポリシーに変更が発生するまで、再実行されません。スクリプトが失敗した場合(終了コード0以外の場合)、デバイスのチェックインごとに3回試行されます。 UACの設定やセットアップパッケージの開始は、プラットフォームスクリプトではなく、検出/修復スクリプトで実行させることも可能です。その場合は、検出スクリプトとしてPowerShellスクリプトをアップロードし(修復スクリプトなし)、「1度だけ」の実行スケジュールをユーザーグループまたはデバイスグループに割り当てます。あるいは、検出スクリプトで以前に実行済みであるかどうか判断し(フォルダーやファイルの存在などで)、未実行であれば修復スクリプトを実行するように構成します。 |
ヒント: Win32アプリとしての配布はできません
*1 Win32 アプリ コンテンツをアップロード用に準備する|Microsoft Intune(Microsoft Learn) Intuneパッケージは圧縮形式であり、配布先のデバイスのC:¥Windows¥IMECacheの下に展開され、この場所からパッケージに指定されたコマンドラインが実行されます。SetROBOのプレーヤーはセットアップパッケージのDataやWorkフォルダーにログを書き込みますが、C:¥Windows¥IMECacheはそのような操作が想定されておらず、アクセス許可の関係で失敗します(右の画面を参照)。 |
お問い合わせ先と体験版:SetROBO for Kittingの詳細ついては、弊社Webサイト「その他の製品・サービス」の「SetROBO for Kitting」のお問い合わせフォーム、または株式会社アープのお問い合わせフォームよりお問い合わせください。 その他の製品・サービス | SAY Technologies SetROBO for Kittingの体験版では、セットアップパッケージ作成を除く機能を体験できます。体験版では、最大100行までの3つのコードをConductorで作成し、Conductor上でコンパイルおよび実行してコードをテストできます。 体験版ダウンロードはこちら|PCキッティング自動化ツール - SetROBO|株式会社アープ |