Guida all'automazione di Secure Boot E2E di esempio
Si applica a
Data di pubblicazione originale: 16 marzo 2026Data ultimo aggiornamento: ID KB del 3 aprile 2026: 5084567
Contenuto dell'articolo
Panoramica
Questa guida descrive il sistema di distribuzione automatizzato per gli aggiornamenti del certificato DB di avvio protetto di Windows utilizzando Criteri di gruppo e onde progressive di implementazione.
L'automazione dell'implementazione del certificato di avvio protetto è un sistema basato su PowerShell che distribuisce gli aggiornamenti del certificato Di avvio protetto di Windows nei computer aggiunti a un dominio in modo controllato e graduale.
Funzionalità principali
|
Funzionalità |
Descrizione |
|
Implementazione graduata |
1 > 2 > 4 > 8... dispositivi per contenitore |
|
Blocco automatico |
I contenitori con dispositivi non raggiungibili sono esclusi |
|
Distribuzione automatizzata dell'oggetto Criteri di gruppo |
Il singolo script di orchestrazione gestisce tutti gli elementi |
|
Esecuzione programmata delle attività |
Non sono necessari prompt interattivi |
|
Monitoraggio in tempo reale |
Visualizzatore di stato con indicatore di stato |
Informazioni di riferimento per le impostazioni Aggiornamenti certificati
In questa sezione
Criteri di gruppo AvailableUpdatesPolicy
|
Posizione del Registro di sistema |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
Nome |
AvailableUpdatesPolicy |
|
Valore |
0x5944 (DWORD) |
Questa è la chiave controllata da GPO/ADMX che:
-
Persiste nei riavvii
-
È impostato da Criteri di gruppo /MDM
-
Non causa cicli di ripetizione dei tentativi (cancellati tramite ClearRolloutFlags)
-
È la chiave corretta per la distribuzione basata sui criteri
Riferimento: metodo oggetti Criteri di gruppo (GPO) di avvio protetto per dispositivi Windows con aggiornamenti gestiti dall'IT
torna a "Certificato Aggiornamenti Impostazioni di riferimento"
WinCSFlags - Flag del sistema di configurazione di Windows
Gli amministratori di dominio possono in alternativa usare il sistema di configurazione di Windows (WinCS) rilasciato con gli aggiornamenti del sistema operativo Windows per distribuire gli aggiornamenti di avvio protetto tra client e server Windows aggiunti a un dominio. È costituito da un'utilità di interfaccia della riga di comando per eseguire query e applicare le configurazioni di avvio protetto in locale a un computer.
|
Nome della funzionalità |
Tasto WINCS |
Descrizione |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
L'abilitazione di questa chiave consente l'installazione dei seguenti certificati di avvio protetto forniti da Microsoft nel dispositivo.
|
Riferimento: API Windows Configuration System (WinCS) per l'avvio protetto
torna a "Certificato Aggiornamenti Impostazioni di riferimento"
Architettura
Fase 1: rilevamento e monitoraggio dello stato a livello aziendale
In questa sezione
Script necessari per la fase 1
Script di esempio per la raccolta dei dati dell'inventario di avvio protetto
|
Nome script di esempio |
Scopo |
Viene eseguito in |
|
Raccoglie i dati sullo stato del dispositivo |
Ogni endpoint (tramite oggetto Criteri di gruppo) |
|
|
Genera report e dashboard |
workstation Amministrazione |
|
|
Automatizza la creazione di oggetti Criteri di gruppo per la raccolta dei dati |
Controller di dominio |
"Fase 1: rilevamento e monitoraggio dello stato a livello aziendale"
Test locali
Prima di distribuire tramite oggetto Criteri di gruppo, testare lo script di raccolta in un singolo computer per verificare le funzionalità.
-
Eseguire lo script di raccolta localmente Apri un prompt con privilegi elevati di PowerShell ed esegui:
& .\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath "C:\Temp\SecureBootTest"
-
Verifica output JSON
# View the collected data Get-Content "C:\Temp\SecureBootTest\*_latest.json" | ConvertFrom-Json | Format-List
Campi chiave da verificare • SecureBootEnabled : deve essere True o False • OverallStatus : Complete, ReadyForUpdate, NeedsData o Error • BucketHash : contenitore di dispositivi per la corrispondenza dei dati confidenza • SecureBootTaskEnabled : mostra lo stato dell'attività di aggiornamento dell'avvio protetto.
-
Script di aggregazione di test
# Generate reports from collected data & ".\Aggregate-SecureBootData.ps1" ' -InputPath "C:\Temp\SecureBootTest" ' -OutputPath "C:\Temp\SecureBootReports" # Apri il dashboard HTML Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
"Fase 1: rilevamento e monitoraggio dello stato a livello aziendale"
Distribuzione oggetto Criteri di gruppo
Usare lo script di automazione fornito da un controller di dominio:
# Esegui sul controller di dominio come Amministrazione di dominio per la sezione ou-ou interattiva - Scelta consigliata # Sostituire "Contoso.com", "Contoso" con il nome del dominio # Sostituire FILESERVER con il nome del file server. Lo script mostra l'elenco di unità organizzative in cui distribuire l'oggetto Criteri di gruppo \Deploy-GPO-SecureBootCollection.ps1 ' -NomeDominio "contoso.com" ' -AutoDetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootData$" -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" ' -Pianifica "Giornaliera" ' -ScheduleTime "14:00" ' -RandomDelayHours 4
Questo script eseguirà le operazioni seguenti:
-
Crea un nuovo oggetto Criteri di gruppo con il nome specificato
-
Copia lo script della raccolta in SYSVOL per la disponibilità elevata
-
Configura script di avvio del computer
-
Collega l'oggetto Criteri di gruppo all'unità organizzativa di destinazione
-
Facoltativamente, crea un'attività programmata per la raccolta periodica
La tabella seguente fornisce indicazioni su quanto tempo il ritardo dipenderà dalle dimensioni della flotta.
|
Dimensioni della flotta |
Intervallo di ritardo |
|
1-10K dispositivi |
4 ore |
|
Dispositivi da 10K-50K |
8 ore |
|
Oltre 50.000 dispositivi |
12-24 ore |
"Fase 1: rilevamento e monitoraggio dello stato a livello aziendale"
Riepilogo delle impostazioni dell'oggetto Criteri di gruppo
|
Impostazione |
Posizione |
Valore |
|
Script di avvio |
Script di configurazione → computer |
Detect-SecureBootCertUpdateStatus.ps1 |
|
Parametri script |
(stesso) |
-OutputPath "\\server\share$" |
|
Criteri di esecuzione |
Modelli di configurazione → Amministrazione computer → PowerShell |
Consenti accesso locale e remoto |
|
Attività programmata |
Preferenze di configurazione → computer → attività pianificate |
Raccolta giornaliera/settimanale |
"Fase 1: rilevamento e monitoraggio dello stato a livello aziendale"
Verifica
-
Forza l'aggiornamento dell'oggetto Criteri di gruppo su Test Machine
## On a test workstation gpupdate /force # Riavvia i computer client allo script di avvio oppure verrà attivato alla prossima pianificazione. Restart-Computer -Force
-
Verifica raccolta dati
# Verificare se i dati sono stati raccolti (nel file server o da qualsiasi computer) Get-ChildItem "\\fileserver\SecureBootData$" | Sort-Object LastWriteTime -Descending | Select-Object -First 10 # Verificare il contenuto JSON Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" | ConvertFrom-Json
-
Controllare l'applicazione Oggetto Criteri di gruppo
# Verifica che l'oggetto Criteri di gruppo sia applicato al computer Select-String "SecureBoot" Lo script salva anche una copia locale per la ridondanza: Get-ChildItem "C:\ProgramData\SecureBootCollection\"
"Fase 1: rilevamento e monitoraggio dello stato a livello aziendale"
Fase 2: script di orchestrazione dell'aggiornamento del certificato di avvio protetto
Importante: Verifica che la fase 1 sia completata, inclusa la raccolta dei dati in ogni punto finale delle condivisioni server remote.
In questa sezione
Script necessari per la fase 2
Script di esempio per la raccolta dei dati dell'inventario di avvio protetto
|
Nome script di esempio |
Scopo |
Sistemi supportati |
|
Raccoglie i dati sullo stato del dispositivo |
Ogni endpoint (tramite oggetto Criteri di gruppo) |
|
|
Genera report e dashboard |
workstation Amministrazione |
|
|
Automatizza la creazione di oggetti Criteri di gruppo per la raccolta dei dati |
Controller di dominio |
|
|
Orchestrazione continua e completamente automatizzata con distribuzione dell'oggetto Criteri di gruppo automatizzata per l'installazione dei certificati |
workstation Amministrazione |
|
|
Distribuisce lo script dell'agente di orchestrazione come attività pianificata per l'implementazione automatizzata |
Controller di dominio |
|
|
Visualizzare lo stato di implementazione del certificato di avvio protetto da qualsiasi workstation |
Amministrazione Workstation |
|
|
Abilita l'attività di aggiornamento dell'avvio protetto |
On End points where task is disabled (Run only once to enable the task if disabled) |
torna a "Fase 2: Script di orchestrazione dell'aggiornamento del certificato di avvio protetto"
Start-SecureBootRolloutOrchestrator.ps1
-
Scopo: Orchestrazione continua e completamente automatizzata con distribuzione automatizzata dell'oggetto Criteri di gruppo.
-
Effetto
-
Chiamate Aggregate-SecureBootData.ps1 per lo stato del dispositivo
-
Genera le onde di implementazione utilizzando il raddoppiamento progressivo
-
Crea un oggetto Criteri di gruppo per la distribuzione dei certificati usando uno dei metodi seguenti
-
Criteri di gruppo avvio protetto AvailableUpdatesPolicy = 0x5944 (impostazione predefinita)
-
Metodo WinCS (Parameter –UseWinCS)
-
-
Crea gruppi di sicurezza Active Directory per l'assegnazione
-
Aggiunge account computer ai gruppi di sicurezza
-
Configura il filtro di sicurezza dell'oggetto Criteri di gruppo
-
Collega l'oggetto Criteri di gruppo all'unità organizzativa di destinazione
-
Monitor per contenitori bloccati (dispositivi non raggiungibili)
-
Sblocca automaticamente quando i dispositivi si ripristinano
-
-
uso
# 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
-
Amministrazione comandi
# 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
-
Parametri
Parametro
Predefinita
Descrizione
AggregationInputPath
Dati obbligatori
Percorso UNC per i file JSON dell'endpoint
ReportBasePath
Dati obbligatori
Percorso locale per report e stato
TargetOU
Radice del dominio
Unità organizzativa per collegare oggetti Criteri di gruppo
WavePrefix
SecureBoot-Rollout
Prefisso di denominazione dell'oggetto Criteri di gruppo/gruppo
MaxWaitHours
72
Ore prima di controllare la raggiungibilità del dispositivo
PollIntervalMinutes
1440
Minuti tra i controlli di stato
DryRun
False
Mostrare cosa accadrebbe senza modifiche
Nota su PollIntervalMinutes: Quando si esegue l'agente di orchestrazione direttamente, l'impostazione predefinita è 1440 minuti (24 ore). Quando viene distribuita tramite Deploy-OrchestratorTask.ps1, l'impostazione predefinita è 30 minuti. Lo script di distribuzione passa il proprio valore predefinito all'agente di orchestrazione. Usare 30 minuti per l'implementazione attiva, 1440 per il monitoraggio della manutenzione.
Parametri facoltativi
Parametro
Predefinita
Descrizione
UseWinCS
False
Usare il metodo WinCS invece di AvailableUpdatesPolicy GPO
WinCSKey
F33E0C8E002
Chiave WinCS per la configurazione di avvio protetto
AllowListPath
(nessuno)
Percorso del file con nomi host per CONSENTI per l'implementazione mirata/pilota. Supporta .txt o .csv.
AllowADGroup
(nessuno)
Gruppo di sicurezza Active Directory di account computer da CONSENTIRE. Esempio: "SecureBoot-Pilot-Computers"
ExclusionListPath
(nessuno)
Percorso del file con nomi host da ESCLUDERE dall'implementazione (dispositivi VIP/dirigenti)
ExcludeADGroup
(nessuno)
Gruppo di sicurezza Active Directory di account computer da escludere. Esempio: "Computer VIP"
ListBlockedBuckets
False
Visualizzare i contenitori di dispositivi attualmente bloccati
SbloccaBucket
(nessuno)
Sbloccare un contenitore specifico. Formato: "Produttore|Modello|BIOS"
Sblocca tutto
False
Sbloccare tutti i contenitori di dispositivi bloccati
torna a "Fase 2: Script di orchestrazione dell'aggiornamento del certificato di avvio protetto"
Deploy-OrchestratorTask.ps1
-
Scopo: Distribuisce l'agente di orchestrazione come attività pianificata di Windows.
-
Vantaggi
-
Nessun prompt di sicurezza di PowerShell (ExecutionPolicy Bypass)
-
Viene eseguito in background continuamente
-
Nessuna interazione dell'utente richiesta
-
Riavvii superstiti
-
-
uso
-
Eseguire la distribuzione con l'account del servizio di dominio (scelta consigliata)
-
Use AvailableUpdates Criteri di gruppo (Metodo predefinito)
\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
Usare il metodo WinCS
\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot" -UseWinCS
-
-
Eseguire la distribuzione con l'account SYSTEM
-
Use AvailableUpdates Criteri di gruppo (Metodo predefinito)
\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports"
-
Usare method.\Deploy-OrchestratorTask.ps1 WinCS
-AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" -UseWinCS
-
Requisiti dell'account del servizio
-
Amministrazione di dominio (per New-GPO, New-ADGroup, Add-ADGroupMember)
-
Accesso in lettura alla condivisione file JSON
-
Accesso in scrittura a ReportBasePath
-
-
-
torna a "Fase 2: Script di orchestrazione dell'aggiornamento del certificato di avvio protetto"
Get-SecureBootRolloutStatus.ps1
-
Scopo: Visualizzare lo stato di avanzamento dell'implementazione da qualsiasi workstation.
-
Contenuto
-
Stato attività pianificata (In esecuzione/Pronto/Arrestato)
-
Numero onda corrente
-
Dispositivi assegnati o aggiornati
-
Indicatore di stato visivo
-
Riepilogo dei contenitori bloccati
-
Collegamento alla dashboard HTML più recente
-
-
uso
# 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
-
Parametri
Parametro
Obbligatorio?
Predefinita
Descrizione
ReportBasePath
Dati obbligatori
—
Percorso locale dei report e dei file di stato
MostraLog
Dati facoltativi
False
Visualizzare le voci recenti del registro dell'agente di orchestrazione
ShowBlocked
Dati facoltativi
False
Visualizzare i dettagli dei contenitori bloccati
ShowWaves
Dati facoltativi
False
Visualizzare la cronologia delle onde
Guardare
Dati facoltativi
0 (disabilitato)
Intervallo di aggiornamento automatico in secondi. Esempio: -Watch 30 aggiorna ogni 30 secondi.
OpenDashboard
Dati facoltativi
False
Aprire il dashboard HTML più recente nel browser predefinito
-
Output di esempio
============================================================== STATO IMPLEMENTAZIONE AVVIO PROTETTO 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- Stato: In Progress Onda corrente: 5 Totale mirato: 1250 Totale aggiornato: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention Esegui con -ShowBlocked per i dettagli
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
torna a "Fase 2: Script di orchestrazione dell'aggiornamento del certificato di avvio protetto"
Passaggi per la distribuzione di E2E (Guida di riferimento rapido)
In questa sezione
Fase 1: infrastruttura di rilevamento
-
Passaggio 1: Creare la condivisione della raccolta
# 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
-
Passaggio 2: Distribuire l'oggetto Criteri di gruppo rilevamento
.\Deploy-GPO-SecureBootCollection.ps1 ` -NomeDominio "contoso.com" ' -OUPath "OU=Workstations,DC=contoso,DC=com" ' -CollectionSharePath "\\server\SecureBootData$"
-
Passaggio 3: Attendere la segnalazione degli endpoint (24-48 ore)
# Controllare lo stato della raccolta (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json"). Conteggio
torna a "Passaggi di distribuzione E2E (Guida di riferimento rapido)"
Fase 2: implementazione orchestrata
-
Passaggio 4: Controllo dei prerequisiti
-
Rilevamento dell'oggetto Criteri di gruppo distribuito (passaggio 2)
-
Almeno più di 50 endpoint che segnalano JSON
-
Account del servizio con diritti di Amministrazione del dominio
-
Server di gestione con PowerShell 5.1+
-
-
Passaggio 5: Distribuire l'agente di orchestrazione come attività pianificata
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
Passaggio 6: Monitorare lo stato
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
Passaggio 7: Visualizza dashboard
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
Passaggio 8: Gestire i bucket bloccati
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Manufacturer|Modello|BIOS"
-
Passaggio 9: Verificare il completamento
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # Lo stato dovrebbe mostrare "Completato"
torna a "Passaggi di distribuzione E2E (Guida di riferimento rapido)"
Files di stato
L'agente di orchestrazione mantiene lo stato in ReportBasePath\RolloutState\:
|
File |
Descrizione |
|
RolloutState.json |
Cronologia delle onde, dispositivi mirati, stato |
|
BlockedBuckets.json |
Bucket che richiedono un'indagine |
|
DeviceHistory.json |
Monitoraggio del dispositivo per nome host |
|
Orchestrator_YYYYMMDD.log |
Log attività giornaliere |
torna a "Passaggi di distribuzione E2E (Guida di riferimento rapido)"
Risoluzione dei problemi
In questa sezione
L'agente di orchestrazione non avanza
-
Controllare l'attività programmata
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
Controllare i log
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
Verificare l'aggiornamento dei dati JSON
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
Contenitori bloccati
-
Elenco bloccato.
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
Analizzare la raggiungibilità del dispositivo.
-
Verifica la presenza di problemi relativi al firmware.
-
Sbloccare dopo un'indagine.
Oggetto Criteri di gruppo non applicato
-
Verifica che l'oggetto Criteri di gruppo esista.
Get-GPO -Name "SecureBoot-Rollout-Wave*"
-
Controllare il filtro di sicurezza.
Get-GPPermission -Name "GPO-Name" -All
-
Verificare che il computer sia nel gruppo di sicurezza.
-
Applicare l'oggetto Criteri di gruppo nella destinazione.
gpupdate /force