Exemplo de Guia de Automatização E2E de Arranque Seguro
Aplica-se a
Data de publicação original: 16 de março de 2026Última data atualizada:ID do KB de 3 de abril de 2026: 5084567
Neste artigo
Visão geral
Este guia descreve o sistema de implantação automatizado para atualizações de certificado do Windows Secure Boot DB usando Política de Grupo e ondas de distribuição progressivas.
A Automação de Distribuição de Certificado de Inicialização Segura é um sistema baseado em PowerShell que implanta atualizações de certificado do Windows Secure Boot DB em máquinas ingressadas no domínio de maneira controlada e graduada.
Principais recursos
|
Recurso |
Descrição |
|
Distribuição graduada |
1 > 2 > 4 > 8... dispositivos por bucket |
|
Bloqueio automático |
Buckets com dispositivos inacessíveis são excluídos |
|
Implantação automatizada de GPO |
O script de orquestrador único manipula tudo |
|
Execução de tarefa agendada |
Não são necessários prompts interativos |
|
Monitoramento em tempo real |
Visualizador de status com barra de progresso |
Referência de configurações de Atualizações de certificado
Nesta seção
Política do Grupo AvailableUpdatesPolicy
|
Local do Registro |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot |
|
Nome |
AvailableUpdatesPolicy |
|
Valor |
0x5944 (DWORD) |
Esta é a chave controlada por GPO/ADMX que:
-
Persiste entre reinicializações
-
É definido por Política de Grupo/MDM
-
Não causa loops de repetição (desmarcados via ClearRolloutFlags)
-
É a chave correta para a implantação orientada por políticas
de volta para "Referência de Configurações de Atualizações de Certificado"
WinCSFlags – Sinalizadores do Sistema de Configuração do Windows
Os administradores de domínio podem, alternativamente, usar o WinCS (Sistema de Configuração do Windows) lançado com atualizações do sistema operacional Windows para implantar as atualizações de Inicialização Segura entre clientes e servidores windows ingressados no domínio. Ele consiste em um utilitário de CLI (interface de linha de comando) para consultar e aplicar configurações de Inicialização Segura localmente a um computador.
|
Nome do Recurso |
Chave WinCS |
Descrição |
|
Feature_AllKeysAndBootMgrByWinCS |
F33E0C8E002 |
Habilitar essa chave permite a instalação dos novos certificados de Inicialização Segura fornecidos pela Microsoft em seu dispositivo.
|
Referência: APIs do WinCS (Sistema de Configuração do Windows) para Inicialização Segura
de volta para "Referência de Configurações de Atualizações de Certificado"
Architecture
Fase 1: Detecção e monitoramento de status no nível da empresa
Nesta seção
Scripts necessários para a Fase 1
Exemplo de scripts de Coleta de Dados de Inventário de Inicialização Segura
|
Nome do script de exemplo |
Finalidade |
Execuções ativadas |
|
Coleta dados de status de dispositivo |
Cada ponto de extremidade (via GPO) |
|
|
Gera relatórios e painéis |
estação de trabalho Administração |
|
|
Automatiza a criação de GPO para coleta de dados |
Controlador de Domínio |
de volta para "Fase 1: Detecção e Monitoramento de Status no nível da empresa"
Teste local
Antes de implantar via GPO, teste o script de coleção em um único computador para verificar a funcionalidade.
-
Executar script de coleção localmente Abra um prompt do PowerShell elevado 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 de chave a serem verificados • SecureBootEnabled – Deve ser True ou False • OverallStatus – Complete, ReadyForUpdate, NeedsData ou Error • BucketHash – Bucket de dispositivo para correspondência de dados de confiança • SecureBootTaskEnabled – mostra status da Tarefa de Atualização de Inicialização Segura.
-
Script de agregação de teste
# Generate reports from collected data & ".\Aggregate-SecureBootData.ps1" ' -InputPath "C:\Temp\SecureBootTest" ' -OutputPath "C:\Temp\SecureBootReports" # Abra o dashboard HTML Start-Process "C:\Temp\SecureBootReports\SecureBoot_Dashboard_*.html"
de volta para "Fase 1: Detecção e Monitoramento de Status no nível da empresa"
Implantação de GPO
Use o script de automação fornecido de um controlador de domínio:
# Executar no Controlador de Domínio como Administração de Domínio para seção de OU interativa – Recomendado # Substitua o "Contoso.com", "Contoso" pelo nome do domínio # Substituir FILESERVER pelo nome do servidor de arquivo. Script mostra lista de OUs para implantar GPO em .\Deploy-GPO-SecureBootCollection.ps1 ' -DomainName "contoso.com" ' -AutoDetectOU ' -CollectionSharePath "\\FILESERVER\SecureBootData$" -ScriptSourcePath ".\Detect-SecureBootCertUpdateStatus.ps1" ' -Agendar "Diário" -ScheduleTime "14:00" ' -RandomDelayHours 4
Este script executará o seguinte:
-
Cria um novo GPO com o nome especificado
-
Copia o script da coleção para o SYSVOL para alta disponibilidade
-
Configura script de inicialização de computador
-
Vincula o GPO ao OU de destino
-
Opcionalmente, cria tarefa agendada para coleção periódica
A tabela a seguir fornece diretrizes sobre quanto tempo o atraso será baseado no tamanho da frota.
|
Tamanho da frota |
Intervalo de atraso |
|
Dispositivos de 1 a 10 mil |
4 horas |
|
Dispositivos 10K-50K |
8 horas |
|
Mais de 50 mil dispositivos |
12 a 24 horas |
de volta para "Fase 1: Detecção e Monitoramento de Status no nível da empresa"
Resumo de configurações de GPO
|
Setting |
Local |
Valor |
|
Script de Inicialização |
Scripts de configuração de computador → |
Detect-SecureBootCertUpdateStatus.ps1 |
|
Parâmetros de script |
(mesmo) |
-OutputPath "\\server\share$" |
|
Política de Execução |
Modelos de configuração de computador → Administração → PowerShell |
Permitir assinatura local e remota |
|
Tarefas Agendadas |
Configuração do computador → preferências → tarefas agendadas |
Coleção Diária/Semanal |
de volta para "Fase 1: Detecção e Monitoramento de Status no nível da empresa"
Algoritmo de
-
Forçar atualização de GPO no teste de Machine
## On a test workstation gpupdate /force # Reinicialize os computadores cliente para inicializar script ou ele será disparado na próxima agenda. Restart-Computer -Force
-
Verificar coleta de dados
# Verificar se os dados foram coletados (no servidor de arquivos ou em qualquer computador) Get-ChildItem "\\fileserver\SecureBootData$" | Sort-Object LastWriteTime -Descending | Select-Object -Primeiro 10 # Verificar o conteúdo JSON Get-Content "\\fileserver\SecureBootData$\TESTPC_latest.json" | ConvertFrom-Json
-
Verificar aplicativo GPO
# Verificar se o GPO é aplicado ao computador Select-String "SecureBoot" O script também salva uma cópia local para redundância: Get-ChildItem "C:\ProgramData\SecureBootCollection\"
de volta para "Fase 1: Detecção e Monitoramento de Status no nível da empresa"
Fase 2: Scripts de orquestração de atualização de certificado de inicialização segura
Importante: Verifique se a Fase1 está concluída, incluindo a coleta de dados em cada ponto de extremidade para compartilhamentos de servidor remoto.
Nesta seção
Scripts necessários para a Fase 2
Exemplo de scripts de Coleta de Dados de Inventário de Inicialização Segura
|
Nome do script de exemplo |
Finalidade |
Funciona em |
|
Coleta dados de status de dispositivo |
Cada ponto de extremidade (via GPO) |
|
|
Gera relatórios e painéis |
estação de trabalho Administração |
|
|
Automatiza a criação de GPO para coleta de dados |
Controlador de Domínio |
|
|
Orquestração totalmente automatizada e contínua com implantação automatizada de GPO para instalação de certificado |
estação de trabalho Administração |
|
|
Implanta script do Orchestrator como tarefa agendada para distribuição automatizada |
Controlador de Domínio |
|
|
Exibir certificado de inicialização segura Distribuir status de qualquer estação de trabalho |
estação de trabalho Administração |
|
|
Habilita a Tarefa de Atualização de Inicialização Segura |
Em Pontos de extremidade em que a tarefa está desabilitada (Execute apenas uma vez para habilitar a tarefa se estiver desabilitada) |
Start-SecureBootRolloutOrchestrator.ps1
-
Propósito: Orquestração totalmente automatizada e contínua com implantação automatizada de GPO.
-
O que ela faz
-
Chama Aggregate-SecureBootData.ps1 para status de dispositivo
-
Gera ondas de distribuição usando duplicação progressiva
-
Cria GPO para implantação de certificado usando um dos métodos a seguir
-
Política de grupo de inicialização segura AvailableUpdatesPolicy = 0x5944 (Padrão)
-
Método WinCS (Parâmetro – UseWinCS)
-
-
Cria grupos de segurança do AD para segmentação
-
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
-
-
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
-
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
-
Painel de
Parâmetro
Padrão
Descrição
AggregationInputPath
Obrigatório
Caminho UNC para ficheiros JSON de ponto final
ReportBasePath
Obrigató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 status
DryRun
False
Mostrar o que aconteceria sem alterações
Nota em PollIntervalMinutes: Ao executar o orquestrador diretamente, a predefinição é 1440 minutos (24 horas). Quando implementada através de Deploy-OrchestratorTask.ps1, a predefinição é de 30 minutos. O script de implementação passa a sua própria predefinição para o orquestrador. Utilize 30 minutos para a implementação ativa, 1440 para monitorização da manutenção.
Parâmetros Opcionais
Parâmetro
Padrão
Descrição
UseWincs
False
Utilizar o método WinCS em vez do GPO AvailableUpdatesPolicy
WinCSKey
F33E0C8E002
Chave WinCS para configuração de Arranque Seguro
AllowListPath
(nenhum)
Caminho para o ficheiro com nomes de anfitrião para PERMITIR para implementação de destino/piloto. Suporta .txt ou .csv.
AllowADGroup
(nenhum)
Grupo de segurança do AD de contas de computador para PERMITIR. Exemplo: "SecureBoot-Pilot-Computers"
ExclusionListPath
(nenhum)
Caminho para o ficheiro com nomes de anfitrião a EXCLUIR da implementação (dispositivos VIP/executivos)
ExcludeADGroup
(nenhum)
Grupo de segurança do AD de contas de computador a excluir. Exemplo: "VIP-Computers"
ListBlockedBuckets
False
Apresentar registos de dispositivos atualmente bloqueados
DesbloquearBucket
(nenhum)
Desbloqueie um registo específico. Formato: "Fabricante|Modelo|BIOS"
DesbloquearTodos
False
Desbloquear todos os registos de dispositivos bloqueados
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
-
-
Uso
-
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
-
-
-
Get-SecureBootRolloutStatus.ps1
-
Propósito: Exibir o progresso da distribuição de qualquer estação de trabalho.
-
O que ele mostra
-
Estado de tarefa agendado (Em execução/pronto/parado)
-
Número de onda atual
-
Dispositivos direcionados versus atualizados
-
Barra de progresso visual
-
Resumo de buckets bloqueados
-
Vincular ao dashboard HTML mais 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
-
Painel de
Parâmetro
Obrigatório?
Padrão
Descrição
ReportBasePath
Obrigatório
—
Caminho local para relatórios e arquivos de estado
ShowLog
IEEE 802.1Q
False
Exibir entradas de log do orquestrador recente
ShowBlocked
IEEE 802.1Q
False
Exibir detalhes de buckets bloqueados
ShowWaves
IEEE 802.1Q
False
Histórico de ondas de exibição
Assistir
IEEE 802.1Q
0 (desabilitado)
Intervalo de atualização automática em segundos. Exemplo: -Assista a 30 atualizações a cada 30 segundos.
OpenDashboard
IEEE 802.1Q
False
Abra o dashboard HTML mais recente no navegador padrão
-
Saída de exemplo
============================================================== STATUS DE DISTRIBUIÇÃO DE INICIALIZAÇÃO SEGURA 2026-02-17 19:30:00 ======================================================
Scheduled Task: Running
ROLLOUT PROGRESS ---------------------------------------- Status: InProgress Onda Atual: 5 Destino Total: 1250 Total atualizado: 847
Progress: [█████████████████████░░░░░░░░░░░░░░░░░░░] 67.8%
BLOCKED BUCKETS: 2 buckets need attention Executar com -ShowBlocked para obter detalhes
LATEST DASHBOARD C:\SecureBootReports\Aggregation_20260217_193000\SecureBoot_Dashboard.html __________________________________________________________________________________________
Etapas de implantação do E2E (Guia de Referência Rápida)
Nesta seção
Fase 1: Infraestrutura de detecção
-
Etapa 1: Criar Compartilhamento de Coleção
# On file server $sharePath = "D:\SecureBootData" New-Item -ItemType Directory -Path $sharePath -Force New-SmbShare -Nome "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","Modifi","Allow") $acl. AddAccessRule($rule) Set-Acl $sharePath $acl
-
Etapa 2: Implantar GPO de Detecção
.\Deploy-GPO-SecureBootCollection.ps1 ` -DomainName "contoso.com" ' -OUPath "OU=Workstations,DC=contoso,DC=com" ' -CollectionSharePath "\\server\SecureBootData$"
-
Etapa 3: aguarde os pontos de extremidade para relatar (24 a 48 horas)
# Verificar o progresso da coleção (Get-ChildItem "\\server\SecureBootData$" -Filter "*.json"). Contar
de volta para "Etapas de Implantação do E2E (Guia de Referência Rápida)"
Fase 2: Distribuição Orquestrada
-
Etapa 4: Verificação de pré-requisitos
-
GPO de detecção implantado (Etapa 2)
-
Pelo menos mais de 50 pontos de extremidade relatando JSON
-
Conta de serviço com direitos de Administração de domínio
-
Servidor de gerenciamento com PowerShell 5.1+
-
-
Etapa 5: Implantar o Orquestrador como tarefa agendada
.\Deploy-OrchestratorTask.ps1 ` -AggregationInputPath "\\server\SecureBootData$" ' -ReportBasePath "C:\SecureBootReports" ' -ServiceAccount "DOMAIN\svc_secureboot"
-
Etapa 6: Monitorar o progresso
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports"
-
Etapa 7: Exibir Painel
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" -OpenDashboard
-
Etapa 8: Gerenciar buckets bloqueados
# List blocked .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
# Investigate and unblock .\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -UnblockBucket "Manufacturer|Modelo|BIOS"
-
Etapa 9: verificar a conclusão
.\Get-SecureBootRolloutStatus.ps1 -ReportBasePath "C:\SecureBootReports" # Status deve mostrar "Concluído"
de volta para "Etapas de Implantação do E2E (Guia de Referência Rápida)"
Estado Files
O orquestrador mantém o estado em ReportBasePath\RolloutState\:
|
Arquivo |
Descrição |
|
RolloutState.json |
Histórico de ondas, dispositivos direcionados, status |
|
BlockedBuckets.json |
Buckets que precisam de investigação |
|
DeviceHistory.json |
Rastreamento de dispositivo por nome do host |
|
Orchestrator_YYYYMMDD.log |
Logs de atividades diárias |
de volta para "Etapas de Implantação do E2E (Guia de Referência Rápida)"
Solução de problemas
Nesta seção
Orquestrador não está progredindo
-
Verificar a tarefa agendada
Get-ScheduledTask -TaskName "SecureBoot-Rollout-Orchestrator"
-
Verificar logs
Get-Content "C:\SecureBootReports\RolloutState\Orchestrator_*.log" -Tail 50
-
Verificar o frescor de dados JSON
(Get-ChildItem "\\server\SecureBootData$" -Filter "*.json" | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) }).Count
Buckets bloqueados
-
Lista bloqueada.
.\Start-SecureBootRolloutOrchestrator.ps1 -ReportBasePath "C:\SecureBootReports" -ListBlockedBuckets
-
Investigue a capacidade de alcance do dispositivo.
-
Verifique se há problemas de firmware.
-
Desbloqueie após a investigação.
GPO não está aplicando
-
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