Exemplu de ghid de automatizare Secure Boot E2E
Se aplică la
Data de publicare inițială: 16 martie 2026
ID KB: 5084567
În acest articol
Prezentare generală
Acest ghid descrie sistemul de implementare automată pentru actualizările certificatelor Windows Secure Boot DB care utilizează Politică de grup și lansări progresive.
Automatizarea lansării certificatului de bootare securizat este un sistem bazat pe PowerShell care implementează actualizări ale certificatului Windows Secure Boot DB pe mașinile legate la domeniu într-o manieră controlată, graduală.
Caracteristici cheie
|
Caracteristică |
Descriere |
|
Lansare graduală |
1 > 2 > 4 > 8... dispozitive per bucket |
|
Blocare automată |
Bucketurile cu dispozitive inaccesibile sunt excluse |
|
Implementare automată GPO |
Scriptul orchestrator unic gestionează totul |
|
Executare activitate planificată |
Nu sunt necesare solicitări interactive |
|
Monitorizare în timp real |
Vizualizator de stare cu bara de progres |
Referință setări Actualizări certificate
În această secțiune
AvailableUpdatesPolicy Politica de grup
|
Locație registry |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
Nume |
AvailableUpdatesPolicy |
|
Valoare |
0x5944 (DWORD) |
Aceasta este cheia controlată de GPO/ADMX care:
-
Persistă între reporniri
-
Este setat de Politică de grup / MDM
-
Nu provoacă reîncercarea buclelor (debifate prin ClearRolloutFlags)
-
Este cheia corectă pentru implementarea bazată pe politică
WinCSFlags - semnalizări ale sistemului de configurare Windows
Ca alternativă, administratorii de domeniu pot utiliza Sistemul de configurare Windows (WinCS) lansat cu actualizările sistemului de operare Windows pentru a implementa actualizările bootării securizate pe toți clienții și serverele Windows asociate la domeniu. Aceasta constă într-un utilitar de interfață linie de comandă (CLI) pentru a interoga și a aplica local configurații secure Boot la un computer.
|
Nume caracteristică |
Cheie WinCS |
Descriere |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
Activarea acestei chei permite instalarea următoarelor certificate secure boot noi furnizate de Microsoft pe dispozitivul dvs.
|
Referință: API-uri Windows Configuration System (WinCS) pentru bootare sigură
Arhitectură
Faza 1: Detectarea și monitorizarea stării la nivel de întreprindere
În această secțiune
Scripturi necesare pentru faza 1
Exemple de scripturi Secure Boot Inventory Data Collection
|
Nume script eșantion |
Scop |
Rulează pe |
|
Colectează datele de stare ale dispozitivului |
Fiecare punct final (prin GPO) |
|
|
Generează rapoarte și tablouri de bord |
stație de lucru Admin |
|
|
Automatizează crearea GPO pentru colectarea datelor |
Controler de domeniu |
înapoi la "Faza 1: detectarea și monitorizarea stării la nivel de întreprindere"
Testare locală
Înainte de a implementa prin GPO, testați scriptul de colecție pe un singur computer pentru a verifica funcționalitatea.
-
Rularea locală a scriptului de colecție Deschideți o solicitare PowerShell cu drepturi sporite și executați:
& .\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath "C:\Temp\SecureBootTest"
-
Verificare ieșire JSON
# View the collected data Get-Content "C:\Temp\SecureBootTest\*_latest.json" | ConvertFrom-Json | Format-List
Câmpuri cheie de verificat • SecureBootEnabled - trebuie să fie Adevărat sau Fals • OverallStatus - Complet, ReadyForUpdate, NeedsData sau Error • BucketHash - bucket de dispozitiv pentru potrivirea datelor de încredere • SecureBootTaskEnabled - arată starea activității secure boot update.
-
Testare script de agregare
# Generate reports from collected data & .\Aggregate-SecureBootCertStatus.ps1" ' -InputPath "C:\Temp\SecureBootTest" ' -OutputPath "C:\Temp\SecureBootReports" # Deschideți tabloul de bord HTML
Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
înapoi la "Faza 1: detectarea și monitorizarea stării la nivel de întreprindere"
Implementare GPO
Utilizați scriptul de automatizare furnizat de un controler de domeniu:
# Rulați pe controlerul de domeniu ca domeniu Admin pentru secțiunea OU interactivă - Recomandat # Înlocuiți "Contoso.com", "Contoso" cu numele domeniului # Înlocuiți FILESERVER cu numele serverului de fișiere. Scriptul afișează lista de OU pe care se implementează GPO .\Deploy-GPO-SecureBootCollection.ps1 ' -DomainName "contoso.com" ' -AutoDetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootLogs$" ' -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" ' -Program "Zilnic" ' -Ora programării "14:00" ' -RandomDelayHours 4
Acest script va efectua următoarele:
-
Creează GPO nou cu numele specificat
-
Copiază scriptul de colecție în SYSVOL pentru disponibilitate ridicată
-
Configurează scriptul de pornire a computerului
-
Leagă GPO la OU țintă
-
Opțional, creează activitatea planificată pentru colecția periodică
Următorul tabel oferă instrucțiuni privind durata întârzierii, în funcție de dimensiunea flotei dvs.
|
Dimensiunea flotei |
Interval de întârziere |
|
Dispozitive 1-10K |
4 ore |
|
Dispozitive 10K-50K |
8 ore |
|
Peste 50.000 de dispozitive |
12-24 de ore |
înapoi la "Faza 1: detectarea și monitorizarea stării la nivel de întreprindere"
Rezumat setări GPO
|
Setare |
Locație |
Valoare |
|
Script la pornire |
Scripturi → de configurare computer |
Detect-SecureBootCertUpdateStatus.ps1 |
|
Parametri script |
(identic) |
-OutputPath "\\server\share$" |
|
Politică de executare |
Șabloane de configurare a computerului → Admin → PowerShell |
Se permite semnătura locală și semnată la distanță |
|
Activitate planificată |
Preferințele de configurare a computerului → → activitățile programate |
Colecție zilnică/săptămânală |
înapoi la "Faza 1: detectarea și monitorizarea stării la nivel de întreprindere"
Verificare
-
Force GPO Update on Test Machine
## On a test workstation gpupdate /force # Reporniți mașinile client pentru a porni script-ul sau se va declanșa la următorul program. Restart-Computer - Forțare
-
Verificare colectare date
# Verificați dacă datele au fost colectate (pe serverul de fișiere sau de pe orice computer) Get-ChildItem "\\fileserver\SecureBootData$" | Sort-Object LastWriteTime -Descendent | Select-Object -Primul 10 # Verificarea conținutului JSON Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" | ConvertFrom-Json
-
Verificare aplicație GPO
# Verificați dacă GPO se aplică la computer gpresult /r /scope:computer | Select-String "SecureBoot" S Scriptul salvează și o copie locală pentru redundanță: Get-ChildItem "C:\ProgramData\SecureBootCollection\"
înapoi la "Faza 1: detectarea și monitorizarea stării la nivel de întreprindere"
Faza 2: Scripturi secure Boot Certificate Update Orchestration
Important: Asigurați-vă că Faza1 este finalizată, inclusiv colectarea datelor de la fiecare punct final către partajările de servere la distanță.
În această secțiune
Scripturi necesare pentru Faza 2
Exemple de scripturi Secure Boot Inventory Data Collection
|
Exemplu de nume script |
Scop |
Rulează pe |
|
Colectează datele de stare ale dispozitivului |
Fiecare punct final (prin GPO) |
|
|
Generează rapoarte și tablouri de bord |
stație de lucru Admin |
|
|
Automatizează crearea GPO pentru colectarea datelor |
Controler de domeniu |
|
|
Orchestrare complet automatizată, continuă cu implementarea automată GPO pentru instalarea certificatelor |
stație de lucru Admin |
|
|
Implementează scriptul Orchestrator ca activitate planificată pentru implementarea automată |
Controler de domeniu |
|
|
Vizualizați starea de lansare a certificatului de bootare securizat de pe orice stație de lucru |
stație de lucru Admin |
|
|
Activează activitatea secure boot update |
La Punctele de sfârșit în care activitatea este dezactivată (Rulați o singură dată pentru a activa activitatea, dacă este dezactivată) |
înapoi la "Faza 2: Secure Boot Certificate Update Orchestration Scripts"
Start-SecureBootRolloutOrchestrator.ps1
-
Scop: Orchestrare complet automatizată, continuă, cu implementarea automată GPO.
-
Ce face
-
Apeluri Aggregate-SecureBootData.ps1 pentru starea dispozitivului
-
Generează unde de lansare utilizând dublarea progresivă
-
Creează GPO pentru implementarea certificatelor utilizând una dintre următoarele metode
-
Politica de grup pentru bootare securizată AvailableUpdatesPolicy = 0x5944 (implicit)
-
Metoda WinCS (Parametru –UseWinCS)
-
-
Creează grupuri de securitate AD pentru direcționare
-
Adaugă conturi de computer la grupurile de securitate
-
Configurează filtrarea de securitate GPO
-
Leagă GPO la OU țintă
-
Monitoare pentru bucketuri blocate (dispozitive inaccesibile)
-
Se deblochează automat atunci când dispozitivele se recuperează
-
-
Utilizare
# 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 1440 -UseWinCS
-
comenzi Admin
# List blocked buckets .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Unblock specific bucket .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Dell|Latitudine5520|BIOS1.2"
# Unblock all .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockAll
-
Parametrii
Parametru
Valoare Implicită
Descriere
AggregationInputPath
Obligatoriu
Calea UNC către fișierele JSON ale punctului final
ReportBasePath
Obligatoriu
Cale locală pentru rapoarte și stare
TintaOU
Rădăcină domeniu
OU pentru legarea GPO-urilor
WavePrefix
SecureBoot-Rollout
Prefix de denumire GPO/grup
MaxWaitHours
72
Ore înainte de a verifica accesibilitatea dispozitivului
SondajIntervalMinutes
1440
Minute între verificările de stare
DryRun
False
Afișați ce s-ar întâmpla fără modificări
înapoi la "Faza 2: Secure Boot Certificate Update Orchestration Scripts"
Deploy-OrchestratorTask.ps1
-
Scop: Implementează orchestratorul ca activitate programată Windows.
-
Avantaje
-
Fără solicitări de securitate PowerShell (Ocolire ExecutionPolicy)
-
Rulează continuu în fundal
-
Nu este necesară interacțiunea utilizatorului
-
Supraviețuiește repornirii
-
-
Utilizare
-
Implementare cu contul serviciului de domeniu (recomandat)
-
Utilizare availableUpdates Politică de grup (metodă implicită)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
Utilizarea metodei WinCS
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot" -UseWinCS
-
-
Implementare cu contul SYSTEM
-
Utilizare availableUpdates Politică de grup (metodă implicită)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports"
-
Utilizarea WinCS method.\Deploy-OrchestratorTask.ps1
-AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" -UseWinCS
-
Cerințe pentru contul de serviciu
-
Admin de domeniu (pentru New-GPO, New-ADGroup, Add-ADGroupMember)
-
Citirea accesului la partajarea fișierelor JSON
-
Acces scriere la ReportBasePath
-
-
-
înapoi la "Faza 2: Secure Boot Certificate Update Orchestration Scripts"
Get-SecureBootRolloutStatus.ps1
-
Scop: Vizualizați progresul lansării de pe orice stație de lucru.
-
Ce se afișează
-
Stare activitate planificată (În rulare/Gata/Oprit)
-
Număr val curent
-
Dispozitive țintite versus actualizate
-
Bara de progres vizuală
-
Rezumat bucketuri blocate
-
Link la cel mai recent tablou de bord HTML
-
-
Utilizare
# 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
-
Eșantion ieșire
============================================================== STARE LANSARE BOOTARE SECURIZATĂ 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- Stare: InProgress Val curent: 5 Total țintă: 1250 Total actualizat: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention Rulați cu -ShowBlocked pentru detalii
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
înapoi la "Faza 2: Secure Boot Certificate Update Orchestration Scripts"
Pașii de implementare E2E (Ghid de referințe rapide)
În această secțiune
Faza 1: Infrastructura de detectare
-
Pasul 1: Creați o partajare de colecție
# 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
-
Pasul 2: Implementarea detectării GPO
.\Deploy-GPO-SecureBootCollection.ps1 ` -DomainName "contoso.com" ' -OUPath "OU=Workstations,DC=contoso,DC=com" ' -CollectionSharePath "\\server\SecureBootData$"
-
Pasul 3: Așteptați ca punctele finale să raporteze (24-48 de ore)
# Verificați progresul colecției (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json"). Conta
înapoi la "Pașii de implementare E2E (Ghid de referințe rapide)"
Faza 2: Lansare orchestrată
-
Pasul 4: Verificare cerințe preliminare
-
Detectarea GPO implementat (Pasul 2)
-
Cel puțin 50+ puncte finale care raportează JSON
-
Cont de serviciu cu drepturi de Admin de domeniu
-
Server de gestionare cu PowerShell 5.1+
-
-
Pasul 5: Implementarea Orchestratorului ca activitate planificată
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
Pasul 6: Monitorizarea progresului
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
Pasul 7: Vizualizare tablou de bord
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
Pasul 8: Gestionarea bucketurilor blocate
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Manufacturer|Model|BIOS"
-
Pasul 9: Verificați finalizarea
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # Starea ar trebui să afișeze "Terminat"
înapoi la "Pașii de implementare E2E (Ghid de referințe rapide)"
Files de stare
Orchestratorul păstrează starea în ReportBasePath\RolloutState\:
|
Fișier |
Descriere |
|
RolloutState.json |
Istoricul valurilor, dispozitivele țintă, starea |
|
BlockedBuckets.json |
Bucketuri care necesită investigație |
|
DeviceHistory.json |
Urmărirea dispozitivelor după numele gazdei |
|
Orchestrator_YYYYMMDD.log |
Jurnale de activitate zilnică |
înapoi la "Pașii de implementare E2E (Ghid de referințe rapide)"
Depanare
În această secțiune
Orchestrator nu progresează
-
Verificați activitatea planificată
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
Verificarea jurnalelor
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
Verificarea prospețimii datelor JSON
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
Bucketuri blocate
-
Listă blocată.
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
Investigați accesibilitatea dispozitivului.
-
Verificați dacă există probleme de firmware.
-
Deblocați după investigație.
GPO nu se aplică
-
Verificați dacă există GPO.
Get-GPO -Name "SecureBoot-Rollout-Wave*"
-
Verificați filtrarea securității.
Get-GPPermission -Name "GPO-Name" -All
-
Verificați dacă computerul este într-un grup de securitate.
-
Aplicați GPO-ul la țintă.
gpupdate /force