はじめに
Project Opal の「認証で止まる問題」を解消する実践的な手順を解説します。
本記事は、以下のような方を対象にしています。
- OpalでCloud PC操作の自動化を試している方
- 「Take control」で止まるのがストレスな方
- スマホから完全自動で実行したい方
Project Opal について
Opal が何のことかわからない方は、以下の記事を参照ください。
AI が Windows を自律操作するって本当? Project Opal (Frontier) を試して分かった「実用的な使いどころ」
https://qiita.com/carol0226/items/a78a888ce0c4d2364232
目指すこと
本記事の目的は、Opal を使う際に、認証を求められて止まってしまう部分を SSO で SKIP して、シームレスに利用できるようにすることです。この工夫によって、スマホのブラウザーから Opal へ指示を出して、自動運転で結果を得られるようになります。
💡 本記事の結論
OpalOnboard.ps1 を 1 回実行することで、Opal の認証停止を SSO で回避でき、完全自動化が可能になります。
こんな感じで運転できるようになります。

注)Computer view は、画面の最上部にでているので、スクロールして 行き来する必要があります。
記事の概要
Opal は Cloud PC 接続時に対話型認証(インタラクティブログイン)を要求するため、既定では自動処理が中断されます。
以下の画面で処理が中断されてしまうため、Take control を使って手動で認証する必要があります。

その操作が煩わしいのですが、以下で紹介する PowerShell スクリプトで事前処理を行っておくことで、この認証を SKIP できるようになります。
該当のスクリプトは、Project Opal のセットアップを進めた際に、下図の通り、管理者ポータルの「オプション」画面で OpalOnboard.ps1 という PowerShell スクリプトが紹介されています。

※この画面は、通常時は 英語で表示されます。判りやすいように ブラウザ翻訳で 日本語化しています。
OpalOnboard.ps1 について
さて、OpalOnboard.ps1 って、どこでどうやって実行すればよいのかが良く分かりません。
何も考えずに実行するのは気持ちが悪いため、ちゃんと調べてから実行しようと思ったわけです。
このプロセスを自動化するためのPowerShellスクリプトをご用意しました。PowerShellスクリプトの内容は、OpalOnboard.ps1でご確認いただけます。
上記のリンクをクリックするとスクリプトの中身がブラウザに表示されるだけで、どこで実行するのか、何回実行するのか、テナントごとに異なるのか — そういった実行に必要な情報は一切書かれていません。
Microsoft Learn の公式ドキュメント(Setting up and Managing Project Opal)にも、このスクリプトの実行手順は記載されていません。
本記事では、スクリプトのソースコードを読み解き、実際に実行した結果をもとに、公式ドキュメントに書かれていない実務上のノウハウ をまとめます。
前提
環境
| 項目 | 内容 |
|---|---|
| テナント | (ご自身のテナント情報) |
| 実行日 | 2026年5月31日 |
| 実行環境 | 管理者の作業PC(Windows 11) |
| PowerShell バージョン | (実行時に確認) |
| 必要な権限 | Directory.ReadWrite.All |
Opal 管理者ポータルの状態
このスクリプトを実行する前に、Opal 管理者ポータルで以下のステップが完了している必要があります。
- ✅ 初期設定
- ✅ クラウドPCのセットアップ
- ✅ カスタム指示
- ✅ スターター
⚠️ 注意: 「Opal App Device Group」がテナント内に存在しない状態でスクリプトを実行すると、エラーになります。必ず管理者ポータルのセットアップを先に完了させてください。
スクリプトの入手方法
Opal 管理者ポータルの「オプション」画面にある OpalOnboard.ps1 のリンクを 右クリック → 名前を付けて保存 してください。
https://res.cdn.office.net/s01-alps/prod/5mttl/OpalOnboard.ps1
💡 上記の URL にブラウザでアクセスして、テキストエディタで保存でも可能です。
このスクリプトについての見解
Copilot に ソースコードを読み解いてもらった結果、気になる 4 つの疑問に対して、以下の見解を持ちました。
Q1. どの環境から実行すればよいのか?
A. 任意の管理者の作業PCから実行すればOKです。Cloud PC 上で実行する必要はありません。
このスクリプトは、ローカルPCに対しては何も変更を加えません。
すべての処理は Microsoft Graph API を経由したテナントレベルの操作 です。
| やっていること | やっていないこと |
|---|---|
| Graph API でサービスプリンシパルを構成 | ローカルレジストリの変更 |
| Entra ID 上のデバイスグループを設定 | エージェントやソフトのインストール |
| テナント全体の SSO 設定を有効化 | 個別デバイスへの設定適用 |
PowerShell と Microsoft.Graph.Authentication モジュールが動く環境であれば、どのPCからでも実行できます。
Q2. 何回実行する必要があるのか?
A. テナントに対して1回だけ実行すれば完了です。
スクリプトの処理フローは以下のとおりです。
① Connect-MgGraph で Microsoft Graph に接続
② 「Opal App Device Group」をテナント内から検索
③ Windows Cloud Login サービスプリンシパル(appId: 270efc09-...)の RDP を有効化
④ デバイスグループをターゲットに追加
これらはすべてテナントの構成を変更する 1回きりの操作 です。Cloud PC が増えるたびに再実行する必要はありません。
Q3. テナントごとに異なるスクリプトなのか?
A. いいえ。全テナント共通の同一スクリプトです。
CDN の URL にテナント ID やパラメータは含まれておらず、静的な共通ファイルです。
https://res.cdn.office.net/s01-alps/prod/5mttl/OpalOnboard.ps1
テナント固有の情報(デバイスグループ ID、サービスプリンシパルのオブジェクト ID など)は、実行時に Graph API で動的に取得 されます。「どのテナントに適用するか」は、Connect-MgGraph でサインインする管理者アカウントによって自動的に決まります。
つまり、ダウンロードしたスクリプトを自分のテナント用に編集する必要はありません。
Q4. Opal 以外の Cloud PC にも影響があるのか?
A. SSO の対象は「Opal App Device Group」に限定されますが、テナントレベルの設定変更を1つ含んでいます。
このスクリプトは2つの設定を行っており、それぞれ影響範囲が異なります。
設定①:isRemoteDesktopProtocolEnabled = true(テナントレベル)
Windows Cloud Login サービスプリンシパルに対して、Entra ID の RDP 認証プロトコルを有効化します。これは テナント全体に適用される設定 です。
設定②:targetDeviceGroups への追加(デバイスグループ単位)
SSO を実際に適用する対象を、デバイスグループ単位で指定します。このスクリプトでは「Opal App Device Group」のみが追加されます。
影響範囲の整理
| 設定 | 影響範囲 | Opal 以外の Cloud PC |
|---|---|---|
isRemoteDesktopProtocolEnabled = true |
テナント全体 | ⚠️ RDP 認証プロトコル自体が有効になる |
targetDeviceGroups に追加 |
グループ内のデバイスのみ | ❌ SSO は適用されない |
つまり、SSO が効くのは targetDeviceGroups に登録されたデバイスだけ なので、Opal 以外の Cloud PC に SSO が勝手に適用されることはありません。
既に AVD や Windows 365 で SSO を利用している場合
実は、この仕組みは Opal 専用のものではありません。Azure Virtual Desktop(AVD)や Windows 365 の SSO 構成も、まったく同じサービスプリンシパルと API を使用しています。
- 既に
isRemoteDesktopProtocolEnabled = trueが設定済みのテナントでは、スクリプトはalready enabledと表示してスキップします -
targetDeviceGroupsは追加型の操作であり、既存のグループ(AVD 用など)を上書きしたり削除したりすることはありません
まだ SSO を使っていないテナントの場合
このスクリプトの実行により、テナントで初めて Entra ID の RDP 認証プロトコルが有効化されます。これ自体は「SSO を可能にする土台」であり、SSO が実際に効くデバイスは targetDeviceGroups で制御されます。
ただし、テナントレベルの設定変更を伴うため、条件付きアクセスポリシーへの影響は事前に確認しておくことを推奨します。
⚠️ 補足:
targetDeviceGroupsには最大 10 グループまで登録できます。AVD や Windows 365 など、複数サービスで SSO を併用する場合はこの上限に注意してください。
💡 手動で確認したい場合や、スクリプト実行でエラーが出た場合のトラブルシュートにも活用できます。
実行結果
私としては、このスクリプトの内容を分析した結果、悪影響は無いものと判断しました。
では、このスクリプトが実施していることが理解できましたので、実際に 実行していきます。
実行手順
# 実行ポリシーを一時的に変更
Set-ExecutionPolicy RemoteSigned -Scope Process -Force
# スクリプトを実行
.\OpalOnboard.ps1
-
スクリプト実行開始
-
Microsoft Graph へのサインイン
-
実行完了
以上で設定は完了です。
これ以降は、Opal からの指示に対して、無認証で Cloud PC に接続されることが確認できると思います。
スマホでの利用方法
Opal の URL を ショートカットや ブックマークから起動できるようにしておきます。
縦長画面ですが、最上部に Cloud PC の Computer View も表示されており、状況を確認できます。
認証のタイミングで、Take control を求められることもありましたが、Take control に切り替わった段階で SSO が機能し、結果的には 認証を行わずに、自動運転に入ることができました。
※完全に無人での認証スキップが保証されるわけではありませんが、実運用上は問題なく自動化が可能でした。
まとめ
OpalOnboard.ps1 は、Project Opal で SSO(シングルサインオン)を有効化するための PowerShell スクリプトです。公式ドキュメントには実行手順が詳しく書かれていませんが、ソースコードを読み解くことで、以下のことがわかりました。
| 疑問 | 回答 |
|---|---|
| どこで実行する? | 任意の管理者PCから(Cloud PC 不要) |
| 何回実行する? | テナントに対して1回だけ |
| テナントごとに違う? | 全テナント共通(テナント情報は実行時に動的取得) |
| 何をしている? | Graph API 経由で SSO 用サービスプリンシパルを構成 |
| 前提条件は? | Opal 管理者ポータルのセットアップ完了 + Directory.ReadWrite.All 権限 |
特に、スマートフォンからの完全自動実行を目指す場合、本設定は実質的に必須となるポイントです。
Project Opal はまだ新しいサービスであり、公式ドキュメントが追いついていない部分もあります。本記事が、これから Opal を導入する方の参考になれば幸いです。




