Exemplo de Guia de Automatização E2E de Arranque Seguro
Aplica-se A
Data de publicação original: 16 de março de 2026
ID da BDC: 5084567
Neste artigo
Descrição geral
Este guia descreve o sistema de implementação automatizada para atualizações de certificados da Base de Dados de Arranque Seguro do Windows com Política de Grupo e ondas de implementação progressivas.
A Automatização de Implementação de Certificados de Arranque Seguro é um sistema baseado no PowerShell que implementa atualizações de certificados da BD de Arranque Seguro do Windows em máquinas associadas a um domínio de forma controlada e graduada.
Principais Funcionalidades
|
Funcionalidade |
Descrição |
|
Implementação Pós-graduada |
1 > 2 > 4 > 8... dispositivos por registo |
|
Bloqueio Automático |
Os registos com dispositivos inacessíveis são excluídos |
|
Implementação automatizada de GPO |
O script de orquestrador único processa tudo |
|
Execução de Tarefas Agendadas |
Não são necessários pedidos interativos |
|
Monitorização em tempo real |
Visualizador de estado com barra de progresso |
Referência das Definições de Atualizações de Certificados
Nesta secção
Política do Grupo AvailableUpdatesPolicy
|
Localização do registo |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
Nome |
AvailableUpdatesPolicy |
|
Valor |
0x5944 (DWORD) |
Esta é a chave controlada por GPO/ADMX que:
-
Persiste entre reinícios
-
É definido por Política de Grupo/MDM
-
Não causa ciclos de repetição (limpos através de ClearRolloutFlags)
-
É a chave correta para a implementação orientada por políticas
voltar a "Referência de Definições de Atualizações de Certificados"
WinCSFlags – Sinalizadores do Sistema de Configuração do Windows
Os administradores de domínio podem, em alternativa, utilizar o Sistema de Configuração do Windows (WinCS) lançado com atualizações do SO Windows para implementar as atualizações de Arranque Seguro em clientes e servidores Windows associados a um domínio. Consiste num utilitário de interface de linha de comandos (CLI) para consultar e aplicar configurações de Arranque Seguro localmente a um computador.
|
Nome da funcionalidade |
Chave WinCS |
Descrição |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
Ativar esta chave permite a instalação dos seguintes novos certificados de Arranque Seguro fornecidos pela Microsoft no seu dispositivo.
|
Referência: APIs do Sistema de Configuração do Windows (WinCS) para Arranque Seguro
voltar a "Referência de Definições de Atualizações de Certificados"
Arquitetura
Fase 1: Monitorização de Deteção e Estado ao nível da Empresa
Nesta secção
Scripts necessários para a Fase 1
Scripts de Recolha de Dados de Inventário de Arranque Seguro de Exemplo
|
Nome do Script de Exemplo |
Objetivo |
Execuções Em |
|
Recolhe dados de estado do dispositivo |
Cada ponto final (através de GPO) |
|
|
Gera relatórios e dashboards |
Administração estação de trabalho |
|
|
Automatiza a criação de GPO para recolha de dados |
Controlador de Domínio |
voltar a "Fase 1: Monitorização de Estado e Deteção ao nível empresarial"
Testes Locais
Antes de implementar através de GPO, teste o script de coleção num único computador para verificar a funcionalidade.
-
Executar Script de Coleção Localmente Abra uma linha de comandos elevada do PowerShell e execute:
& .\Detect-SecureBootCertUpdateStatus.ps1 -OutputPath "C:\Temp\SecureBootTest"
-
Verificar a Saída JSON
# View the collected data Get-Content "C:\Temp\SecureBootTest\*_latest.json" | ConvertFrom-Json | Format-List
Campos chave a verificar • SecureBootEnabled – Deve ser Verdadeiro ou Falso • OverallStatus – Complete, ReadyForUpdate, NeedsData ou Error • BucketHash – Registo de dispositivos para correspondência de dados de confiança • SecureBootTaskEnabled – mostra o estado da Tarefa de Atualização de Arranque Seguro.
-
Testar Script de Agregação
# Generate reports from collected data & .\Aggregate-SecureBootCertStatus.ps1" -InputPath "C:\Temp\SecureBootTest" " -OutputPath "C:\Temp\SecureBootReports" # Abra o dashboard HTML
Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
voltar a "Fase 1: Monitorização de Estado e Deteção ao nível empresarial"
Implementação do GPO
Utilize o script de automatização fornecido a partir de um controlador de domínio:
# Execute no Controlador de Domínio como Administração de Domínio para a Secção interativa da UO – Recomendado # Substitua "Contoso.com", "Contoso" pelo nome do domínio # Substitua FILESERVER pelo nome do servidor de ficheiros. O script mostra a lista de UOs para implementar o GPO no .\Deploy-GPO-SecureBootCollection.ps1 ' -DomainName "contoso.com" " -AutoDetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootLogs$" " -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" " -Agendar "Diariamente" -ScheduleTime "14:00" " -RandomDelayHours 4
Este script efetuará o seguinte:
-
Cria um novo GPO com o nome especificado
-
Copia o script de coleção para SYSVOL para elevada disponibilidade
-
Configura o Script de Arranque do Computador
-
Liga o GPO à UO de destino
-
Opcionalmente, cria a tarefa agendada para a coleção periódica
A tabela seguinte fornece orientações sobre quanto tempo o atraso será baseado no tamanho da sua frota.
|
Tamanho da frota |
Intervalo de atrasos |
|
Dispositivos de 1 a 10 000 pessoas |
4 horas |
|
Dispositivos 10K-50K |
8 horas |
|
Dispositivos com mais de 50 mil |
12 a 24 horas |
voltar a "Fase 1: Monitorização de Estado e Deteção ao nível empresarial"
Resumo das Definições de GPO
|
Definição |
Localização |
Valor |
|
Script de Arranque |
Configuração do Computador → Scripts |
Detect-SecureBootCertUpdateStatus.ps1 |
|
Parâmetros de Script |
(o mesmo) |
-OutputPath "\\server\share$" |
|
Política de Execução |
Configuração do Computador → Administração Modelos → PowerShell |
Permitir assinatura local e remota |
|
Tarefa Agendada |
Configuração do Computador → Preferências → Tarefas Agendadas |
Coleção diária/semanal |
voltar a "Fase 1: Monitorização de Estado e Deteção ao nível empresarial"
Verificação
-
Forçar Atualização do GPO no Machin de Testee
## On a test workstation gpupdate /force # Reinicie as máquinas cliente para o script de arranque ou será acionada na próxima agenda. Restart-Computer -Force
-
Verificar Recolha de Dados
# Verifique se os dados foram recolhidos (no servidor de ficheiros ou em qualquer computador) Get-ChildItem "\\fileserver\SecureBootData$" | Sort-Object LastWriteTime -Descending | Select-Object -Primeiros 10 # Verificar conteúdo JSON Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" | ConvertFrom-Json
-
Verificar a Aplicação GPO
# Verifique se o GPO foi aplicado ao computador gpresult /r /scope:computer | Select-String "SecureBoot" s O script também guarda uma cópia local para redundância: Get-ChildItem "C:\ProgramData\SecureBootCollection\"
voltar a "Fase 1: Monitorização de Estado e Deteção ao nível empresarial"
Fase 2: Scripts de Orquestração de Atualização de Certificados de Arranque Seguro
Importante: Certifique-se de que a Fase1 está concluída, incluindo a recolha de dados em cada ponto final para partilhas remotas do servidor.
Nesta secção
Scripts necessários para a Fase 2
Scripts de Recolha de Dados de Inventário de Arranque Seguro de Exemplo
|
Nome do script de exemplo |
Objetivo |
Executado no |
|
Recolhe dados de estado do dispositivo |
Cada ponto final (através de GPO) |
|
|
Gera relatórios e dashboards |
Administração estação de trabalho |
|
|
Automatiza a criação de GPO para recolha de dados |
Controlador de Domínio |
|
|
Script de Start-SecureBootRolloutOrchestrator.ps1 de exemplo |
Orquestração contínua totalmente automatizada com implementação de GPO automatizado para instalação de certificados |
Administração estação de trabalho |
|
Implementa o script do Orchestrator como tarefa agendada para a implementação automatizada |
Controlador de Domínio |
|
|
Ver o estado de Implementação do Certificado de Arranque Seguro a partir de qualquer estação de trabalho |
Administração Workstation |
|
|
Ativa a Tarefa de Atualização de Arranque Seguro |
Em Pontos finais onde a tarefa está desativada (Execute apenas uma vez para ativar a tarefa se estiver desativada) |
voltar a "Fase 2: Scripts de Orquestração de Atualização de Certificados de Arranque Seguro"
Start-SecureBootRolloutOrchestrator.ps1
-
Objetivo: Orquestração contínua totalmente automatizada com implementação de GPO automatizado.
-
Função
-
Chamadas Aggregate-SecureBootData.ps1 para o estado do dispositivo
-
Gera ondas de implementação com duplicação progressiva
-
Cria o GPO para a implementação de certificados com um dos seguintes métodos
-
Política de Grupo de Arranque Seguro AvailableUpdatesPolicy = 0x5944 (Predefinição)
-
Método WinCS (Parâmetro –UseWinCS)
-
-
Cria grupos de segurança do AD para filtragem
-
Adiciona contas de computador a grupos de segurança
-
Configura a filtragem de segurança de GPO
-
Liga o GPO à UO de destino
-
Monitores para registos bloqueados (dispositivos inacessíveis)
-
Desbloqueia automaticamente quando os dispositivos recuperam
-
-
Utilização
# 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
-
Administração comandos
# 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
-
Parâmetros
Parâmetro
Predefinição
Descrição
AggregationInputPath
Necessário
Caminho UNC para ficheiros JSON de ponto final
ReportBasePath
Necessário
Caminho local para relatórios e estado
TargetOU
Raiz de domínio
UO para ligar GPOs
WavePrefix
SecureBoot-Rollout
Prefixo de nomenclatura GPO/grupo
MaxWaitHours
72
Horas antes de verificar a acessibilidade do dispositivo
PollIntervalMinutes
1440
Minutos entre verificações de estado
DryRun
False
Mostrar o que aconteceria sem alterações
voltar a "Fase 2: Scripts de Orquestração de Atualização de Certificados de Arranque Seguro"
Deploy-OrchestratorTask.ps1
-
Objetivo: Implementa o orquestrador como uma Tarefa Agendada do Windows.
-
Benefícios
-
Sem pedidos de segurança do PowerShell (ExecutionPolicy Bypass)
-
É executado continuamente em segundo plano
-
Não é necessária qualquer interação do utilizador
-
Sobrevive a reinícios
-
-
Utilização
-
Implementar com conta de serviço de domínio (recomendado)
-
Utilizar AvailableUpdates Política de Grupo (Método Predefinido)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" " -ReportBasePath "C:\SecureBootReports" " -ServiceAccount "DOMAIN\svc_secureboot"
-
Utilizar o método WinCS
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" " -ReportBasePath "C:\SecureBootReports" " -ServiceAccount "DOMAIN\svc_secureboot" -UseWinCS
-
-
Implementar com a conta SYSTEM
-
Utilizar AvailableUpdates Política de Grupo (Método Predefinido)
.\Deploy-OrchestratorTask.ps1 ' -AggregationInputPath "\\server\SecureBootData$" " -ReportBasePath "C:\SecureBootReports"
-
Utilizar o WinCS method.\Deploy-OrchestratorTask.ps1
-AggregationInputPath "\\server\SecureBootData$" " -ReportBasePath "C:\SecureBootReports" -UseWinCS
-
Requisitos da Conta de Serviço
-
Administração de Domínio (para New-GPO, New-ADGroup, Add-ADGroupMember)
-
Acesso de leitura à partilha de ficheiros JSON
-
Acesso de escrita ao ReportBasePath
-
-
-
voltar a "Fase 2: Scripts de Orquestração de Atualização de Certificados de Arranque Seguro"
Get-SecureBootRolloutStatus.ps1
-
Objetivo: Veja o progresso da implementação a partir de qualquer estação de trabalho.
-
O que mostra
-
Estado da tarefa agendada (Em Execução/Pronto/Parado)
-
Número de onda atual
-
Dispositivos visados vs. atualizados
-
Barra de progresso visual
-
Resumo de registos bloqueados
-
Ligar ao dashboard HTML mais recente
-
-
Utilização
# 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
-
Saída de exemplo
============================================================== ESTADO DE IMPLEMENTAÇÃO DE ARRANQUE SEGURO 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- Estado: Entrada Onda Atual: 5 Total Direcionado: 1250 Total Atualizado: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention Execute com -ShowBlocked para obter detalhes
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
voltar a "Fase 2: Scripts de Orquestração de Atualização de Certificados de Arranque Seguro"
Passos de Implementação E2E (Guia de Referência Rápida)
Nesta secção
Fase 1: Infraestrutura de Deteção
-
Passo 1: Criar Partilha de Coleção
# 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("Computadores de Domínio","Modificar","Permitir") $acl. AddAccessRule($rule) Set-Acl $sharePath $acl
-
Passo 2: Implementar o GPO de Deteção
.\Deploy-GPO-SecureBootCollection.ps1 ` -DomainName "contoso.com" " -OUPath "UO=Workstations,DC=contoso,DC=com" " -CollectionSharePath "\\server\SecureBootData$"
-
Passo 3: aguarde que os Pontos Finais reportem (24 a 48 horas)
# Verificar o progresso da coleção (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json"). Contagem
voltar a "Passos de Implementação E2E (Guia de Referência Rápida)"
Fase 2: Implementação Orquestrada
-
Passo 4: Verificação de Pré-requisitos
-
GPO de deteção implementado (Passo 2)
-
Pelo menos mais de 50 pontos finais que reportam JSON
-
Conta de serviço com direitos de Administração de Domínio
-
Servidor de gestão com o PowerShell 5.1+
-
-
Passo 5: Implementar o Orchestrator como Tarefa Agendada
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" " -ReportBasePath "C:\SecureBootReports" " -ServiceAccount "DOMAIN\svc_secureboot"
-
Passo 6: Monitorizar o Progresso
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
Passo 7: Ver Dashboard
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
Passo 8: Gerir Registos Bloqueados
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Manufacturer|Modelo|BIOS"
-
Passo 9: Verificar a Conclusão
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" #Estado deve mostrar "Concluído"
voltar a "Passos de Implementação E2E (Guia de Referência Rápida)"
Estado Files
O orquestrador mantém o estado em ReportBasePath\RolloutState\:
|
Ficheiro |
Descrição |
|
RolloutState.json |
Histórico de ondas, dispositivos direcionados, estado |
|
BlockedBuckets.json |
Grupos que precisam de investigação |
|
DeviceHistory.json |
Controlo de dispositivos por nome de anfitrião |
|
Orchestrator_YYYYMMDD.log |
Registos de atividades diários |
voltar a "Passos de Implementação E2E (Guia de Referência Rápida)"
Resolução de Problemas
Nesta secção
Orchestrator Não Progride
-
Verificar a tarefa agendada
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
Verificar registos
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
Verificar a atualização de dados JSON
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
Registos Bloqueados
-
Lista bloqueada.
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
Investigar a acessibilidade do dispositivo.
-
Verifique se existem problemas de firmware.
-
Desbloqueie após a investigação.
GPO Não Está a Ser Aplicado
-
Verifique se o GPO existe.
Get-GPO -Name "SecureBoot-Rollout-Wave*"
-
Verifique a filtragem de segurança.
Get-GPPermission -Name "GPO-Name" -All
-
Verifique se o computador está no grupo de segurança.
-
Aplique o GPO no destino.
gpupdate /force