Przykładowy przewodnik automatyzacji bezpiecznego rozruchu E2E
Dotyczy
Oryginalna data publikacji: 16 marca 2026Ostatnia data aktualizacji: 3 kwietnia 2026 r.Identyfikator KB: 5084567
W tym artykule
Przegląd
W tym przewodniku opisano zautomatyzowany system wdrażania aktualizacji certyfikatów bazy danych bezpiecznego rozruchu systemu Windows przy użyciu zasady grupy i progresywnych fal wdrażania.
Automatyzacja wdrażania certyfikatów bezpiecznego rozruchu to system oparty na programie PowerShell, który wdraża aktualizacje certyfikatów bazy danych bezpiecznego rozruchu systemu Windows na komputerach przyłączonych do domeny w sposób kontrolowany i stopniowy.
Najważniejsze funkcje
|
Funkcja |
Opis |
|
Stopniowe wdrożenie |
1 > 2 > 4 > 8... urządzenia na zasobnik |
|
Automatyczne blokowanie |
Zasobniki z nieosiągalnymi urządzeniami są wykluczone |
|
Automatyczne wdrażanie obiektu zasad grupy |
Jeden skrypt aranżacji obsługuje wszystko |
|
Zaplanowane wykonanie zadania |
Nie są wymagane żadne interakcyjne monity |
|
Monitorowanie w czasie rzeczywistym |
Podgląd stanu z paskiem postępu |
Dokumentacja ustawień Aktualizacje certyfikatu
W tej sekcji
Zasady grupy AvailableUpdatesPolicy
|
Lokalizacja rejestru |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
Nazwa |
AvailableUpdatesPolicy |
|
Wartość |
0x5944 (DWORD) |
Jest to klawisz sterowany przez gpo/ADMX, który:
-
Trwa podczas ponownych uruchomień
-
Ustawiane przez zasady grupy /MDM
-
Nie powoduje ponownych prób pętli (wyczyszczone przez ClearRolloutFlags)
-
Jest właściwym kluczem wdrażania opartego na zasadach
powrót do pozycji "Odwołanie do ustawień Aktualizacje certyfikatu"
WinCSFlags — flagi systemu konfiguracji systemu Windows
Administratorzy domeny mogą również używać systemu konfiguracji systemu Windows (WinCS) wydanego z aktualizacjami systemu operacyjnego Windows do wdrażania aktualizacji bezpiecznego rozruchu na serwerach i klientach systemu Windows przyłączonych do domeny. Składa się on z narzędzia interfejsu wiersza polecenia (CLI) do wykonywania zapytań i stosowania konfiguracji bezpiecznego rozruchu lokalnie na komputerze.
|
Nazwa funkcji |
Klucz WinCS |
Opis |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
Włączenie tego klucza umożliwia zainstalowanie na urządzeniu następujących certyfikatów bezpiecznego rozruchu dostarczonych przez firmę Microsoft.
|
Informacje: Interfejsy API systemu konfiguracji systemu Windows (WinCS) do bezpiecznego rozruchu
powrót do pozycji "Odwołanie do ustawień Aktualizacje certyfikatu"
Architektura
Faza 1: Wykrywanie i monitorowanie stanu na poziomie przedsiębiorstwa
W tej sekcji
Skrypty potrzebne do fazy 1
Przykładowe skrypty zbierania danych w spisie bezpiecznego rozruchu
|
Przykładowa nazwa skryptu |
Celu |
Działa wł. |
|
Zbiera dane o stanie urządzenia |
Każdy punkt końcowy (za pośrednictwem obiektu zasad grupy) |
|
|
Generuje raporty i pulpity nawigacyjne |
stacja robocza Administracja |
|
|
Automatyzuje tworzenie obiektów zasad grupy na potrzeby zbierania danych |
Kontroler domeny |
powrót do "Faza 1: Wykrywanie i monitorowanie stanu na poziomie przedsiębiorstwa"
Testowanie lokalne
Przed wdrożeniem za pośrednictwem obiektu zasad grupy przetestuj skrypt kolekcji na jednym komputerze, aby sprawdzić funkcjonalność.
-
Uruchamianie skryptu kolekcji lokalnie Otwórz monit programu PowerShell z podwyższonym poziomem uprawnień i wykonaj:
& .\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath "C:\Temp\SecureBootTest"
-
Weryfikowanie danych wyjściowych JSON
# View the collected data Get-Content "C:\Temp\SecureBootTest\*_latest.json" | ConvertFrom-Json | Format-List
Pola kluczy do zweryfikowania • SecureBootEnabled — powinna być prawda lub fałsz • GeneralStatus — Complete, ReadyForUpdate, NeedsData lub Error • BucketHash — zasobnik urządzenia umożliwiający dopasowywanie danych ufności • SecureBootTaskEnabled — pokazuje stan zadania aktualizacji bezpiecznego rozruchu.
-
Testowanie skryptu agregacji
# Generate reports from collected data & ".\Aggregate-SecureBootData.ps1" -InputPath "C:\Temp\SecureBootTest" ' -OutputPath "C:\Temp\SecureBootReports" # Otwórz pulpit nawigacyjny HTML Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
powrót do "Faza 1: Wykrywanie i monitorowanie stanu na poziomie przedsiębiorstwa"
Wdrożenie obiektu zasad grupy
Użyj skryptu automatyzacji udostępnionego z kontrolera domeny:
# Uruchom na kontrolerze domeny jako Administracja domeny dla interakcyjnej sekcji OU — zalecane # Zamień ciąg "Contoso.com", "Contoso" na nazwę domeny # Zamień program FILESERVER na nazwę serwera plików. Skrypt pokazuje listę osób, dla których ma zostać wdrożony obiekt zasad grupy .\Deploy-GPO-SecureBootCollection.ps1 ' -DomainName "contoso.com" ' -AutodetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootData$" -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" ' -Zaplanuj "Dzienny" ' -ScheduleTime "14:00" ' -RandomDelayHours 4
Ten skrypt wykona następujące czynności:
-
Tworzy nowy obiekt zasad grupy o określonej nazwie
-
Kopiuje skrypt kolekcji do SYSVOL w celu zapewnienia wysokiej dostępności
-
Konfiguruje skrypt uruchamiania komputera
-
Łączy obiekt zasad grupy z docelową kartą graficzną
-
Opcjonalnie tworzy zaplanowane zadanie dla kolekcji okresowej
W poniższej tabeli przedstawiono, jak długo opóźnienie będzie zależeć od rozmiaru floty.
|
Rozmiar floty |
Zakres opóźnień |
|
Urządzenia 1–10 K |
4 godziny |
|
Urządzenia 10K-50K |
8 godzin |
|
Ponad 50 000 urządzeń |
12–24 godziny |
powrót do "Faza 1: Wykrywanie i monitorowanie stanu na poziomie przedsiębiorstwa"
Podsumowanie ustawień obiektu zasad grupy
|
Ustawienie |
Lokalizacja |
Wartość |
|
Skrypt uruchamiania |
Skrypty → konfiguracji komputera |
Detect-SecureBootCertUpdateStatus.ps1 |
|
Parametry skryptu |
(to samo) |
-OutputPath "\\server\share$" |
|
Zasady wykonywania |
Szablony → Administracja konfiguracji komputera → programie PowerShell |
Zezwalaj na podpis lokalny i zdalny |
|
Zaplanowane zadanie |
Preferencje → konfiguracji komputera → zaplanowanych zadań |
Kolekcja dzienna/tygodniowa |
powrót do "Faza 1: Wykrywanie i monitorowanie stanu na poziomie przedsiębiorstwa"
Weryfikacja
-
Force GPO Update on Test Machine
## On a test workstation gpupdate /force # Uruchom ponownie komputery klienckie, aby uruchomić skrypt uruchamiania, lub uruchomi się on w następnym harmonogramie. Restart-Computer -Siła
-
Weryfikowanie zbierania danych
# Sprawdź, czy dane zostały zebrane (na serwerze plików lub z dowolnego komputera) Get-ChildItem "\\fileserver\SecureBootData$" | Sort-Object LastWriteTime -Descending | Select-Object -Pierwsze 10 # Weryfikowanie zawartości JSON Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" | ConvertFrom-Json
-
Sprawdź aplikację obiektu zasad grupy
# Sprawdź, czy obiekt zasad grupy został zastosowany do komputera Select-String "SecureBoot" Skrypt zapisuje również kopię lokalną dla nadmiarowości: Get-ChildItem "C:\ProgramData\SecureBootCollection\"
powrót do "Faza 1: Wykrywanie i monitorowanie stanu na poziomie przedsiębiorstwa"
Etap 2. Aktualizacja certyfikatu bezpiecznego rozruchu — skrypty aranżacji
Ważne: Upewnij się, że faza 1 została ukończona, w tym zbieranie danych w każdym punkcie końcowym do udziałów serwera zdalnego.
W tej sekcji
Skrypty potrzebne do fazy 2
Przykładowe skrypty zbierania danych w spisie bezpiecznego rozruchu
|
Przykładowa nazwa skryptu |
Celu |
Działa w następujących systemach |
|
Zbiera dane o stanie urządzenia |
Każdy punkt końcowy (za pośrednictwem obiektu zasad grupy) |
|
|
Generuje raporty i pulpity nawigacyjne |
stacja robocza Administracja |
|
|
Automatyzuje tworzenie obiektów zasad grupy na potrzeby zbierania danych |
Kontroler domeny |
|
|
W pełni zautomatyzowana, ciągła aranżacja z automatycznym wdrażaniem obiektu zasad grupy do instalacji certyfikatu |
stacja robocza Administracja |
|
|
Wdrażanie skryptu aranżacji jako zaplanowanego zadania w celu automatycznego wdrożenia |
Kontroler domeny |
|
|
Wyświetl stan wdrożenia certyfikatu bezpiecznego rozruchu z dowolnej stacji roboczej |
stacja robocza Administracja |
|
|
Włącza zadanie aktualizacji bezpiecznego rozruchu |
W punktach końcowych, w których zadanie jest wyłączone (uruchom tylko raz, aby włączyć zadanie, jeśli jest wyłączone) |
powrót do "Faza 2: Skrypty aranżacji aktualizacji certyfikatu bezpiecznego rozruchu"
Start-SecureBootRolloutOrchestrator.ps1
-
Celu: W pełni zautomatyzowana, ciągła aranżacja z automatycznym wdrażaniem obiektów zasad grupy.
-
Opis
-
Połączenia Aggregate-SecureBootData.ps1 w celu ustawienia stanu urządzenia
-
Generuje fale wdrażania za pomocą progresywnego podwojenia
-
Tworzy obiekt zasad grupy dla wdrożenia certyfikatów przy użyciu jednej z następujących metod
-
Zasady grupy bezpiecznego rozruchu AvailableUpdatesPolicy = 0x5944 (domyślne)
-
Metoda WinCS (Parametr — UseWinCS)
-
-
Tworzy grupy zabezpieczeń usługi AD na potrzeby kierowania
-
Dodaje konta komputerów do grup zabezpieczeń
-
Konfiguruje filtrowanie zabezpieczeń obiektu zasad grupy
-
Łączy obiekt zasad grupy z docelową kartą graficzną
-
Monitory blokowanych zasobników (nieosiągalne urządzenia)
-
Automatyczne odblokowywanie po odzyskaniu przez urządzenia
-
-
użytkowanie
# 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
-
polecenia Administracja
# List blocked buckets .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Unblock specific bucket .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Dell|Szerokość5520|BIOS1.2"
# Unblock all .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockAll
-
Parametry
Parametr
Domyślne
Opis
AggregationInputPath
Wymagane
Ścieżka UNC do plików JSON punktu końcowego
ReportBasePath
Wymagane
Ścieżka lokalna raportów i stanu
TargetOU
Domena główna
OU do łączenia obiektów GPO
WavePrefix
SecureBoot-Rollout
Prefiks nazewnictwa obiektów gpo/grup
MaxWaitHours
72
Godziny przed sprawdzeniem przydatności urządzenia
PollIntervalMinutes
1440
Minuty między testami stanu
DryRun
False
Pokaż, co by się stało bez zmian
Uwaga dotycząca pollintervalMinutes: Podczas bezpośredniego uruchamiania aranżacji domyślnie jest to 1440 minut (24 godziny). Po wdrożeniu za pośrednictwem Deploy-OrchestratorTask.ps1 wartością domyślną jest 30 minut. Skrypt wdrażania przekazuje własne domyślne do aranżacji. Użyj 30 minut na aktywne wdrożenie, 1440 na monitorowanie konserwacji.
Parametry opcjonalne
Parametr
Domyślne
Opis
UżyjwinCS
False
Użyj metody WinCS zamiast obiektu GPO AvailableUpdatesPolicy
WinCSKey
F33E0C8E002
Klucz WinCS do konfiguracji bezpiecznego rozruchu
AllowListPath
(brak)
Ścieżka do pliku z nazwami hostów umożliwiającymi wdrożenie docelowe/pilotażowe. Obsługuje .txt lub .csv.
AllowADGroup
(brak)
Grupa zabezpieczeń usługi AD na kontach komputerów, na które ma zostać wybrana opcja ZEZWALAJ. Przykład: "SecureBoot-Pilot-Computers"
ExclusionListPath
(brak)
Ścieżka do pliku z nazwami hostów do wykluczenia z wdrożenia (urządzenia VIP/executive)
ExcludeADGroup
(brak)
Grupa zabezpieczeń usługi AD kont komputerów do wykluczenia. Przykład: "Komputery VIP"
ListBlockedBuckets
False
Wyświetlanie obecnie zablokowanych zasobników urządzeń
OdblokujBucket
(brak)
Odblokowywanie określonego zasobnika. Format: "Producent|Model|BIOS"
Odblokujwszy
False
Odblokowywanie wszystkich zablokowanych zasobników urządzeń
powrót do "Faza 2: Skrypty aranżacji aktualizacji certyfikatu bezpiecznego rozruchu"
Deploy-OrchestratorTask.ps1
-
Celu: Wdraża aranżatora jako zadanie zaplanowane w systemie Windows.
-
Korzyści
-
Brak monitów zabezpieczeń programu PowerShell (ExecutionPolicy Bypass)
-
Działa w tle w sposób ciągły
-
Interakcja z użytkownikami nie jest wymagana
-
Przetrwa ponowny rozruch
-
-
użytkowanie
-
Wdrażanie za pomocą konta usługi domeny (zalecane)
-
Użyj zasady grupy AvailableUpdates (metoda domyślna)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -ServiceAccount "DOMAIN\svc_secureboot"
-
Korzystanie z metody WinCS
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -ServiceAccount "DOMAIN\svc_secureboot" -UseWinCS
-
-
Wdrażanie za pomocą konta SYSTEM
-
Użyj zasady grupy AvailableUpdates (metoda domyślna)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports"
-
Korzystanie z method.\Deploy-OrchestratorTask.ps1 WinCS
-AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" —UseWinCS
-
Wymagania dotyczące konta usługi
-
Administracja domeny (dla obiektów New-GPO, New-ADGroup, Add-ADGroupMember)
-
Odczyt dostępu do udziału plików JSON
-
Dostęp do zapisu w programie ReportBasePath
-
-
-
powrót do "Faza 2: Skrypty aranżacji aktualizacji certyfikatu bezpiecznego rozruchu"
Get-SecureBootRolloutStatus.ps1
-
Celu: Wyświetl postęp wdrażania z dowolnej stacji roboczej.
-
Co jest wyświetlane
-
Stan zaplanowanego zadania (uruchomiony/gotowy/zatrzymany)
-
Numer bieżącego etapu
-
Urządzenia kierowane a zaktualizowane
-
Wizualny pasek postępu
-
Podsumowanie blokowanych zasobników
-
Link do najnowszego pulpitu nawigacyjnego HTML
-
-
użytkowanie
# 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
-
Parametry
Parametr
Wymagane?
Domyślne
Opis
ReportBasePath
Wymagane
—
Ścieżka lokalna do raportów i plików stanowych
Pokażlog
Opcjonalne
False
Wyświetlanie ostatnich wpisów dziennika aranżacji lub
ShowBlocked
Opcjonalne
False
Wyświetlanie szczegółów zablokowanych zasobników
Pokaż fale
Opcjonalne
False
Wyświetlanie historii fal
Oglądanie
Opcjonalne
0 (wyłączone)
Interwał automatycznego odświeżania w sekundach. Przykład: -Zegarek 30 odświeża co 30 sekund.
OpenDashboard
Opcjonalne
False
Otwieranie najnowszego pulpitu nawigacyjnego HTML w przeglądarce domyślnej
-
Przykładowe dane wyjściowe
============================================================== STAN WDROŻENIA BEZPIECZNEGO ROZRUCHU 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- Stan: InProgress Bieżąca fala: 5 Łączna liczba kierowanych: 1250 Całkowita aktualizacja: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention Uruchom za pomocą polecenia -ShowBlocked, aby uzyskać szczegółowe informacje
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
powrót do "Faza 2: Skrypty aranżacji aktualizacji certyfikatu bezpiecznego rozruchu"
Kroki wdrażania E2E (krótki przewodnik)
W tej sekcji
Faza 1: Infrastruktura wykrywania
-
Krok 1. Tworzenie udziału kolekcji
# 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
-
Krok 2. Wdrażanie obiektu zasad grupy wykrywania
.\Deploy-GPO-SecureBootCollection.ps1 ` -DomainName "contoso.com" ' -OUPath "OU=Workstations,DC=contoso,DC=com" ' -CollectionSharePath "\\server\SecureBootData$"
-
Krok 3. Oczekiwanie na raportowanie punktów końcowych (24–48 godzin)
# Sprawdź postęp kolekcji (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json"). Liczba
Faza 2. Wdrożenie zaaranżowane
-
Krok 4. Sprawdzanie wymagań wstępnych
-
Wdrożono obiekt zasad grupy wykrywania (krok 2)
-
Co najmniej 50+ punktów końcowych raportowania JSON
-
Konto usługi z prawami Administracja domeny
-
Serwer zarządzania z programem PowerShell 5.1+
-
-
Krok 5. Wdrażanie aranżacji jako zaplanowanego zadania
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" -ReportBasePath "C:\SecureBootReports" -ServiceAccount "DOMAIN\svc_secureboot"
-
Krok 6. Monitorowanie postępu
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
Krok 7. Wyświetlanie pulpitu nawigacyjnego
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
Krok 8. Zarządzanie zablokowanymi zasobnikami
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Producent|Model|BIOS"
-
Krok 9. Weryfikacja ukończenia
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # Stan powinien zawierać komunikat "Ukończono"
Files województwo
Aranżator zachowuje stan w ReportBasePath\RolloutState\:
|
Plik |
Opis |
|
RolloutState.json |
Historia fal, urządzenia kierowane, stan |
|
BlockedBuckets.json |
Zasobniki wymagające badania |
|
DeviceHistory.json |
Śledzenie urządzeń według nazwy hosta |
|
Orchestrator_YYYYMMDD.log |
Dzienniki codziennej aktywności |
Rozwiązywanie problemów
W tej sekcji
Aranżator nie rozwija się
-
Sprawdzanie zaplanowanego zadania
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
Sprawdzanie dzienników
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
Sprawdzanie świeżości danych JSON
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
Zablokowane zasobniki
-
Lista jest zablokowana.
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
Sprawdź osiągalność urządzenia.
-
Sprawdź, czy nie ma problemów z oprogramowaniem układowym.
-
Odblokuj po zbadaniu.
Obiekt zasad grupy nie stosuje się
-
Sprawdź, czy obiekt zasad grupy istnieje.
Get-GPO -Name "SecureBoot-Rollout-Wave*"
-
Sprawdź filtrowanie zabezpieczeń.
Get-GPPermission -Name "GPO-Name" -All
-
Sprawdź, czy komputer jest w grupie zabezpieczeń.
-
Zastosuj obiekt zasad grupy do obiektu docelowego.
gpupdate /force