セキュア ブート E2E オートメーション ガイドのサンプル
適用先
元の発行日: 2026 年 3 月 16 日最終更新日: 2026 年 4 月 3 日KB ID: 5084567
この記事の内容
概要
このガイドでは、グループ ポリシーと段階的なロールアウトウェーブを使用した Windows Secure Boot DB 証明書更新プログラムの自動展開システムについて説明します。
セキュア ブート証明書のロールアウトの自動化は、Windows Secure Boot DB 証明書の更新を、管理された段階的な方法でドメインに参加しているマシンに展開する PowerShell ベースのシステムです。
主な機能
|
機能 |
説明 |
|
段階的ロールアウト |
1 > 2 > 4 > 8.... バケットあたりのデバイス数 |
|
自動ブロック |
到達できないデバイスを含むバケットは除外されます |
|
GPO の自動展開 |
1 つのオーケストレーター スクリプトがすべてを処理する |
|
スケジュールされたタスクの実行 |
対話型プロンプトは必要ありません |
|
リアルタイム監視 |
進行状況バーを含む状態ビューアー |
証明書Updates設定リファレンス
このセクションの内容
AvailableUpdatesPolicy グループ ポリシー
|
レジストリの場所 |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
名前 |
AvailableUpdatesPolicy |
|
値 |
0x5944 (DWORD) |
これは、次の GPO/ADMX によって制御されるキーです。
-
再起動後も永続化されます
-
グループ ポリシー/MDM によって設定されます
-
再試行ループは発生しません (ClearRolloutFlags を介してクリアされます)
-
ポリシー駆動型デプロイの正しいキーです
リファレンス: IT で管理された更新プログラムを使用した Windows デバイスのセキュア ブートのグループ ポリシー オブジェクト (GPO) メソッド
WinCSFlags - Windows 構成システム フラグ
ドメイン管理者は、Windows OS 更新プログラムでリリースされた Windows 構成システム (WinCS) を使用して、ドメインに参加している Windows クライアントとサーバー間でセキュア ブート更新プログラムを展開することもできます。 これは、 コマンド ライン インターフェイス (CLI) ユーティリティで 構成され、セキュア ブート構成をコンピューターに対してローカルに照会して適用します。
|
機能名 |
WinCS キー |
説明 |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
このキーを有効にすると、次の Microsoft が提供するセキュア ブートの新しい証明書をデバイスにインストールできます。
|
アーキテクチャ
フェーズ 1: エンタープライズ レベルでの検出と状態の監視
このセクションの内容
フェーズ 1 に必要なスクリプト
セキュア ブート インベントリ データ収集スクリプトのサンプル
|
サンプル スクリプト名 |
目的 |
実行日 |
|
デバイスの状態データを収集します |
各エンドポイント (GPO 経由) |
|
|
レポートとダッシュボードを生成します |
ワークステーション管理 |
|
|
データ収集用の GPO の作成を自動化します |
ドメイン コントローラー |
ローカル テスト
GPO を使用して展開する前に、1 台のコンピューターでコレクション スクリプトをテストして機能を確認します。
-
コレクション スクリプトをローカルで実行します 管理者特権の PowerShell プロンプトを開き、次を実行します。
.\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath "C:\Temp\SecureBootTest" を & する
-
JSON 出力を確認する
# View the collected data Get-Content "C:\Temp\SecureBootTest\*_latest.json" |ConvertFrom-Json |Format-List
検証するキー フィールド • SecureBootEnabled – True または False のにする必要があります • OverallStatus – Complete、ReadyForUpdate、NeedsData、またはエラー • BucketHash – 信頼度データマッチング用のデバイスバケット • SecureBootTaskEnabled - セキュア ブート更新タスクの状態を表示します。
-
集計スクリプトのテスト
# Generate reports from collected data & ".\Aggregate-SecureBootData.ps1" ' -InputPath "C:\Temp\SecureBootTest" ' -OutputPath "C:\Temp\SecureBootReports" # HTML ダッシュボード を開きます Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
GPO の展開
ドメイン コントローラーから提供される自動化スクリプトを使用します。
# 対話型 OU セクションのドメイン 管理としてドメイン コントローラーで実行する – 推奨される # "Contoso.com"、"Contoso" をドメイン の名前に置き換えます # FILESERVER をファイル サーバー名に置き換えます。 スクリプトには、GPO を展開する OU の一覧が表示されます .\Deploy-GPO-SecureBootCollection.ps1 ' -DomainName "contoso.com" ' -AutoDetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootData$" -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" ' -Schedule "Daily" ' -ScheduleTime "14:00" ' -RandomDelayHours 4
このスクリプトでは、次の処理が実行されます。
-
指定した名前の新しい GPO を作成します
-
高可用性のためにコレクション スクリプトを SYSVOL にコピーします
-
コンピューターのスタートアップ スクリプトを構成します
-
GPO をターゲット OU にリンクする
-
必要に応じて、定期的な収集のスケジュールされたタスクを作成します
次の表は、フリートのサイズに基づいて遅延が発生する時間に関するガイダンスを示しています。
|
フリートのサイズ |
遅延範囲 |
|
1 ~10,000 台のデバイス |
4 時間 |
|
10K-50K デバイス |
8 時間 |
|
50K 以上のデバイス |
12 から 24 時間 |
GPO 設定の概要
|
設定 |
場所 |
値 |
|
スタートアップ スクリプト |
コンピューター構成→スクリプト |
Detect-SecureBootCertUpdateStatus.ps1 |
|
スクリプト パラメーター |
(同じ) |
-OutputPath "\\server\share$" |
|
実行ポリシー |
コンピューター構成→ 管理テンプレート → PowerShell |
ローカル署名とリモート署名を許可する |
|
スケジュールされたタスク |
スケジュールされたタスク→コンピューター構成→基本設定 |
日単位/週単位のコレクション |
検証
-
テストで GPO の更新を強制する
## On a test workstation gpupdate /force # クライアント マシンを再起動してスクリプトを起動するか、次のスケジュールでトリガーされます。Restart-Computer -Force
-
データ収集の確認
# データが (ファイル サーバー上または任意のコンピューターから) 収集されたかどうかを確認 Get-ChildItem "\\fileserver\SecureBootData$" | LastWriteTime の Sort-Object -降順 | Select-Object -First 10 # JSON コンテンツのを確認する Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" |ConvertFrom-Json
-
GPO アプリケーションを確認する
# GPO がコンピューターに適用されていることを確認 "SecureBoot"を Select-String このスクリプトでは、冗長性のためにローカル コピーも保存されます: "C:\ProgramData\SecureBootCollection\" を Get-ChildItem
フェーズ 2: セキュア ブート証明書の更新オーケストレーション スクリプト
重要: リモート サーバー共有への各エンド ポイントでのデータ収集を含め、フェーズ 1 が完了していることを確認します。
このセクションの内容
フェーズ 2 に必要なスクリプト
セキュア ブート インベントリ データ収集スクリプトのサンプル
|
サンプル スクリプト名 |
目的 |
上で実行されます |
|
デバイスの状態データを収集します |
各エンドポイント (GPO 経由) |
|
|
レポートとダッシュボードを生成します |
ワークステーション管理 |
|
|
データ収集用の GPO の作成を自動化します |
ドメイン コントローラー |
|
|
証明書のインストールのための GPO の自動展開を使用した、完全に自動化された継続的なオーケストレーション |
ワークステーション管理 |
|
|
自動ロールアウトのスケジュールされたタスクとして Orchestrator スクリプトをデプロイする |
ドメイン コントローラー |
|
|
セキュリティで保護されたブート証明書のロールアウト状態を任意のワークステーションから表示する |
管理 ワークステーション |
|
|
セキュア ブート更新タスクを有効にする |
タスクが無効になっているエンド ポイント (無効になっている場合は 1 回だけ実行してタスクを有効にする) |
Start-SecureBootRolloutOrchestrator.ps1
-
目的: 完全に自動化された継続的なオーケストレーションと、自動化された GPO 展開。
-
実行内容
-
デバイスの状態 Aggregate-SecureBootData.ps1 呼び出し
-
段階的な 2 倍を使用してロールアウトウェーブを生成します
-
次のいずれかの方法を使用して、証明書の展開用の GPO を作成します
-
セキュア ブート グループ ポリシー AvailableUpdatesPolicy = 0x5944 (既定値)
-
WinCS メソッド (パラメーター – UseWinCS)
-
-
ターゲット設定用の AD セキュリティ グループを作成します
-
コンピューター アカウントをセキュリティ グループに追加する
-
GPO のセキュリティ フィルター処理を構成します
-
GPO をターゲット OU にリンクする
-
ブロックされたバケット (到達できないデバイス) の監視
-
デバイスの回復時の自動ブロック解除
-
-
使用法
# Interactive (testing) .\Start-SecureBootRolloutOrchestrator.ps1 ' -AggregationInputPath "\\fileserver\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -PollIntervalMinutes 30
# Interactive (testing), leveraging WinCS method .\Start-SecureBootRolloutOrchestrator.ps1 ' -AggregationInputPath "\\fileserver\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -PollIntervalMinutes 30 ' -UseWinCS
-
管理 コマンド
# List blocked buckets .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Unblock specific bucket .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Dell|Latitude5520|BIOS1.2"
# Unblock all .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockAll
-
[パラメーター]
パラメータ
既定値
説明
AggregationInputPath
必須
エンドポイント JSON ファイルへの UNC パス
ReportBasePath
必須
レポートと状態のローカル パス
TargetOU
ドメイン ルート
GPO をリンクする OU
WavePrefix
SecureBoot-Rollout
GPO/グループの名前付けプレフィックス
MaxWaitHours
72
デバイスの到達可能性を確認する前の時間
PollIntervalMinutes
1440
ステータス チェック間の分
DryRun
False
変更なしで何が起こるかを表示する
PollIntervalMinutes に関する注意: オーケストレーターを直接実行する場合、既定値は 1440 分 (24 時間) です。 Deploy-OrchestratorTask.ps1 経由でデプロイする場合、既定値は 30 分です。 デプロイ スクリプトは、独自の既定値をオーケストレーターに渡します。 アクティブなロールアウトには 30 分、メンテナンス監視には 1440 分を使用します。
省略可能なパラメーター
パラメータ
既定値
説明
UseWinCS
False
AvailableUpdatesPolicy GPO の代わりに WinCS メソッドを使用する
WinCSKey
F33E0C8E002
セキュア ブート構成用の WinCS キー
AllowListPath
(なし)
ターゲット/パイロット ロールアウトのホスト名が ALLOW のファイルへのパス。 .txt または .csv をサポートします。
AllowADGroup
(なし)
許可するコンピューター アカウントの AD セキュリティ グループ。 例: "SecureBoot-Pilot-Computers"
ExclusionListPath
(なし)
ロールアウトから除外するホスト名を持つファイルへのパス (VIP/エグゼクティブ デバイス)
ExcludeADGroup
(なし)
除外するコンピューター アカウントの AD セキュリティ グループ。 例: "VIP-Computers"
ListBlockedBuckets
False
現在ブロックされているデバイス バケットを表示する
UnblockBucket
(なし)
特定のバケットのブロックを解除します。 形式: "製造元|モデル|BIOS"
UnblockAll
False
ブロックされているすべてのデバイス バケットのブロックを解除する
Deploy-OrchestratorTask.ps1
-
目的: オーケストレーターを Windows スケジュール タスクとして展開します。
-
特典
-
PowerShell セキュリティ プロンプトなし (ExecutionPolicy Bypass)
-
バックグラウンドで継続的に実行される
-
ユーザー操作は必要ありません
-
再起動後も存続
-
-
使用法
-
ドメイン サービス アカウントを使用してデプロイする (推奨)
-
AvailableUpdates グループ ポリシーを使用する (既定のメソッド)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
WinCS メソッドを使用する
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot" -UseWinCS
-
-
SYSTEM アカウントを使用してデプロイする
-
AvailableUpdates グループ ポリシーを使用する (既定のメソッド)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports"
-
WinCS method.\Deploy-OrchestratorTask.ps1 を使用する
-AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" -UseWinCS
-
サービス アカウントの要件
-
ドメイン 管理 (New-GPO、New-ADGroup、Add-ADGroupMember の場合)
-
JSON ファイル共有への読み取りアクセス
-
ReportBasePath への書き込みアクセス
-
-
-
Get-SecureBootRolloutStatus.ps1
-
目的: 任意のワークステーションからのロールアウトの進行状況を表示します。
-
表示される内容
-
スケジュールされたタスクの状態 (実行中/準備完了/停止済み)
-
現在のウェーブ番号
-
対象となるデバイスと更新されたデバイス
-
ビジュアル プログレス バー
-
ブロックされたバケットの概要
-
最新の HTML ダッシュボードへのリンク
-
-
使用法
# Quick status check .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
# Continuous monitoring (refreshes every 30 seconds) .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -Watch 30
# View blocked buckets .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -ShowBlocked
# View wave history .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -ShowWaves
# View recent log .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -ShowLog
# Open dashboard in browser .\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
[パラメーター]
パラメータ
必須ですか?
既定値
説明
ReportBasePath
必須
—
レポートと状態ファイルへのローカル パス
ShowLog
省略可能
False
最近のオーケストレーター ログ エントリを表示する
ShowBlocked
省略可能
False
ブロックされたバケットの詳細を表示する
ShowWaves
省略可能
False
ウェーブ履歴を表示する
視聴
省略可能
0 (無効)
自動更新間隔 (秒単位)。 例: -Watch 30 は 30 秒ごとに更新されます。
OpenDashboard
省略可能
False
既定のブラウザーで最新の HTML ダッシュボードを開く
-
サンプル出力
============================================================== セキュア ブート ロールアウトの状態 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- 状態: InProgress 現在のウェーブ: 5 対象の合計: 1250 合計更新数: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention 詳細については、-ShowBlocked を使用して実行します
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
E2E デプロイ手順 (クイック リファレンス ガイド)
このセクションの内容
フェーズ 1: 検出インフラストラクチャ
-
手順 1: コレクション共有を作成する
# On file server $sharePath = "D:\SecureBootData" New-Item -ItemType Directory -Path $sharePath -Force New-SmbShare -Name "SecureBootData$" -Path $sharePath -FullAccess "Domain Admins" -ChangeAccess "Domain Computers"
# Set NTFS permissions $acl = Get-Acl $sharePath $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Domain Computers","Modify","Allow") $acl。AddAccessRule($rule) Set-Acl $sharePath $acl
-
手順 2: 検出 GPO を展開する
.\Deploy-GPO-SecureBootCollection.ps1 ` -DomainName "contoso.com" ' -OUPath "OU=Workstations,DC=contoso,DC=com" ' -CollectionSharePath "\\server\SecureBootData$"
-
手順 3: エンドポイントがレポートされるまで待機する (24 から 48 時間)
# コレクションの進行状況を確認します (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json")。カウント
フェーズ 2: 調整されたロールアウト
-
手順 4: 前提条件の確認
-
検出 GPO が展開されました (手順 2)
-
JSON を報告するエンドポイントが少なくとも 50 以上
-
ドメイン 管理権限を持つサービス アカウント
-
PowerShell 5.1 以降の管理サーバー
-
-
手順 5: スケジュールされたタスクとしてオーケストレーターをデプロイする
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
手順 6: 進行状況を監視する
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
手順 7: ダッシュボードを表示する
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
手順 8: ブロックされたバケットを管理する
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Manufacturer|モデル|BIOS"
-
手順 9: 完了を確認する
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # 状態に "完了" と表示されます
状態Files
オーケストレーターは ReportBasePath\RolloutState\:
|
ファイル |
説明 |
|
RolloutState.json |
ウェーブ履歴、対象デバイス、状態 |
|
BlockedBuckets.json |
調査が必要なバケット |
|
DeviceHistory.json |
ホスト名によるデバイスの追跡 |
|
Orchestrator_YYYYMMDD.log |
毎日のアクティビティ ログ |
トラブルシューティング
このセクションの内容
オーケストレーターが進行していない
-
スケジュールされたタスクを確認する
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
ログを確認する
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
JSON データの鮮度を確認する
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
ブロックされたバケット
-
ブロックされたリスト。
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
デバイスの到達可能性を調査します。
-
ファームウェアの問題を確認します。
-
調査後にブロックを解除します。
GPO が適用されない
-
GPO が存在することを確認します。
Get-GPO -Name "SecureBoot-Rollout-Wave*"
-
セキュリティ フィルター処理を確認します。
Get-GPPermission -Name "GPO-Name" -All
-
コンピューターがセキュリティ グループに含まれるかどうかを確認します。
-
ターゲットに GPO を適用します。
gpupdate /force