Windows 11: Implementação Automatizada com Unattend e OSDCloud

Instalar o Windows 11 em dez ou duzentas máquinas dá o mesmo trabalho: arrancar pela ISO, responder ao assistente, escolher partições, criar o utilizador local e juntar ao domínio à mão. Num parque que se renova por ciclos, esse tempo acumula-se e cada instalação manual é uma oportunidade para configurações divergentes. A Microsoft retirou entretanto a ferramenta que muitas organizações usavam para automatizar o processo: o Microsoft Deployment Toolkit (MDT) está retired e a sua integração com o Configuration Manager já não é suportada.

O caminho que substitui o MDT divide-se em duas peças. O ficheiro de resposta autounattend.xml automatiza o Windows Setup — partições, edições, chaves, contas e scripts de primeira execução (Windows Setup Automation Overview). O OSDCloud arranca do WinPE e automatiza o resto: descarrega o ESD oficial do Windows 11, aplica os driver packs do fabricante e lança a instalação sem intervenção (Deploy-OSDCloud Overview). A pós-instalação fecha o circuito com Intune e Autopilot: a máquina entra no tenant e recebe políticas sem servidor interno.

Neste artigo

  1. O MDT está retired — o que muda
  2. Como funciona o autounattend.xml
  3. Escrever o autounattend.xml
  4. Preparar o ambiente OSDCloud
  5. Criar o USB de arranque
  6. Lançar a instalação com Start-OSDCloud
  7. Verificar a máquina após a instalação
  8. Sysprep e imagem de referência
  9. USMT para migração de perfis
  10. Pós-instalação com Intune e Autopilot
  11. Erros Comuns
  12. Checklist
  13. Artigos Relacionados
  14. Fontes Oficiais

1. O MDT está retired — o que muda

O MDT acompanhava os administradores de Windows desde 2010: task sequences, driver management, migração de perfis com USMT. A página oficial de release notes afirma agora, em destaque, que “Microsoft Deployment Toolkit (MDT) is retired” (MDT release notes) e remete para a lista de funcionalidades removidas, onde consta que “The MDT Integration with CM and Standalone is no longer supported with Configuration Manager” (Removed and deprecated features).

Na prática, o que desaparece com o MDT: task sequences para instalar e capturar (o OSDCloud cobre a instalação e o DISM a captura), os nós de integração na consola do ConfigMgr e o WinPE próprio — substituído pelo boot image do OSDCloud.

O Windows Deployment Services (WDS) continua a existir e pode servir o boot image por rede, mas deixa de ser obrigatório: um USB com WinPE chega. O OSDCloud documenta até o caminho inverso — arrancar por cima de um boot image MDT ou ConfigMgr existente, exigindo os componentes WinPE (WinPE-WMI, WinPE-NetFX, WinPE-Scripting, WinPE-PowerShell, WinPE-StorageWMI, WinPE-DismCmdlets) e ligação à internet (Start OSDCloud from an MDT or ConfigMgr Boot Image). Para quem vinha do MDT é o percurso mais curto: manter o WinPE e instalar o módulo OSDCloud por cima.

2. Como funciona o autounattend.xml

O Windows Setup processa o ficheiro de resposta em passos de configuração:

Pass O que processa Exemplo típico
windowsPE Particionamento, imagem, drivers, chaves Criar EFI + MSR + Windows
offlineServicing Pacotes e drivers numa imagem offline Injectar um driver raro
generalize Sysprep, remoção de dados da máquina Limpar apps antes de capturar
specialize Configuração por máquina: nome, domínio Scripts de preparação
oobeSystem Primeiro arranque visível ao utilizador Scripts finais

O ficheiro com o nome exacto autounattend.xml na raiz do USB é detectado automaticamente pelo Windows Setup quando nenhum outro ficheiro de resposta é indicado (Windows Setup Automation Overview). O Setup copia-o para %WINDIR%\Panther e continua a processá-lo entre reboots — um autounattend mal formado “cola-se” a uma máquina durante vários passos.

Duas regras de segurança vêm directamente da documentação oficial: o Setup remove dados sensíveis (passwords, product keys) da cópia em cache no fim de cada pass, mas o ficheiro persiste em %WINDIR%\Panther entre reboots e deve ser eliminado antes de entregar a máquina ao utilizador.

3. Escrever o autounattend.xml

O exemplo seguinte automatiza a instalação do Windows 11 Pro numa PME portuguesa. Guardar como autounattend.xml na raiz do USB.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
  <settings pass="windowsPE">
    <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
      <SetupUILanguage>
        <UILanguage>pt-PT</UILanguage>
      </SetupUILanguage>
      <InputLocale>0816:00000816</InputLocale>
      <SystemLocale>pt-PT</SystemLocale>
      <UILanguage>pt-PT</UILanguage>
      <UserLocale>pt-PT</UserLocale>
    </component>
    <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
      <DiskConfiguration>
        <Disk wcm:action="add">
          <DiskID>0</DiskID>
          <WillWipeDisk>true</WillWipeDisk>
          <CreatePartitions>
            <CreatePartition wcm:action="add">
              <Order>1</Order><Type>EFI</Type><Size>300</Size>
            </CreatePartition>
            <CreatePartition wcm:action="add">
              <Order>2</Order><Type>MSR</Type><Size>16</Size>
            </CreatePartition>
            <CreatePartition wcm:action="add">
              <Order>3</Order><Type>Primary</Type><Extend>true</Extend>
            </CreatePartition>
          </CreatePartitions>
        </Disk>
      </DiskConfiguration>
      <ImageInstall>
        <OSImage>
          <InstallFrom>
            <MetaData wcm:action="add">
              <Key>/IMAGE/NAME</Key>
              <Value>Windows 11 Pro</Value>
            </MetaData>
          </InstallFrom>
          <InstallTo>
            <DiskID>0</DiskID><PartitionID>3</PartitionID>
          </InstallTo>
        </OSImage>
      </ImageInstall>
      <UserData>
        <AcceptEula>true</AcceptEula>
        <ProductKey><Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key></ProductKey>
      </UserData>
    </component>
  </settings>
  <settings pass="specialize">
    <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
      <RunSynchronousCommand wcm:action="add">
        <Order>1</Order>
        <Path>cmd /c copy /y E:\Scripts\SetupComplete.cmd C:\Windows\Setup\Scripts\SetupComplete.cmd</Path>
        <Description>Copiar o script de pós-instalação</Description>
      </RunSynchronousCommand>
    </component>
  </settings>
</unattend>

A chave do exemplo é a KMS client key genérica do Windows 11 Pro publicada pela Microsoft — activa contra um KMS interno, com a chave real a atribuir depois.

O que cada bloco faz:

  • SetupUILanguage/InputLocale/SystemLocale/UserLocale — instala em português de Portugal, teclado 0816 — sem este bloco, a primeira pergunta do Setup é a língua
  • DiskConfiguration com WillWipeDisk=true — apaga o disco 0 e cria a estrutura GPT/UEFI (EFI 300 MB, MSR 16 MB, resto primário)
  • ImageInstall com /IMAGE/NAME — selecciona a edição dentro do ESD multi-edição, evitando o menu de escolha
  • RunSynchronousCommand no specialize — copia o SetupComplete.cmd do USB para C:\Windows\Setup\Scripts, a pasta que o Windows executa automaticamente no fim da instalação

⚠ Atenção: o WillWipeDisk=true não pergunta nada — num portátil com dados pessoais, o disco é apagado na hora, sem confirmação e sem recuperação. Em frotas mistas, o comportamento mais seguro é manter o ClearDiskConfirm visível ou validar primeiro o modelo do disco.

4. Preparar o ambiente OSDCloud

O OSDCloud corre como módulo PowerShell dentro do WinPE — a preparação num PC de administração leva minutos:

# Instalar o módulo OSD (OSDCloud) a partir da PowerShell Gallery
Install-Module OSD -Scope AllUsers -Force
Import-Module OSD

# Criar o workspace (por defeito em C:\OSDCloud)
New-OSDCloudWorkspace -WorkspacePath C:\OSDCloud

O workspace guarda os templates WinPE e os scripts injectados no boot image. Os templates consultam-se e mudam-se com:

# Ver templates disponíveis e escolher
Get-OSDCloudTemplateNames
Set-OSDCloudTemplate -Name 'WinRE'

Atenção: as operações de workspace e template exigem PowerShell elevado.

Com o workspace criado, injectar conteúdo próprio no WinPE antes de gerar a ISO. O módulo OSD suporta scripts no arranque do WinPE e componentes adicionais ao boot image:

# Componentes WinPE obrigatórios para o OSDCloud (ADK Optional Components)
# WinPE-WMI, WinPE-NetFX, WinPE-Scripting, WinPE-PowerShell, WinPE-StorageWMI, WinPE-DismCmdlets

# Injetar o script que arranca o deployment automaticamente no arranque do WinPE
Edit-MyWinPE -Startup 'Start-OSDCloudGUI' -WorkspacePath C:\OSDCloud

O Edit-MyWinPE injeta o comando de arranque no WinPE: ao arrancar o USB, a consola PowerShell lança o OSDCloud sem que o técnico abra uma linha de comandos. Sem este passo, o arranque deixa o técnico no prompt do WinPE — a implementação é manual.

5. Criar o USB de arranque

A ISO do WinPE gera-se a partir do workspace e o USB grava-se com Rufus:

# Criar ISO do WinPE com OSDCloud
New-OSDCloudISO -WorkspacePath C:\OSDCloud

Depois de gravado, copiar para a raiz do USB os ficheiros próprios da organização:

USB (FAT32, UEFI)
├── autounattend.xml        <- resposta do Windows Setup
└── Scripts\
    └── SetupComplete.cmd   <- pós-instalação

A estrutura exacta de pastas depende da versão do OSDCloud — o princípio mantém-se: o WinPE arranca e o Windows Setup recolhe o autounattend.xml da raiz quando o setup.exe é lançado.

O OSDCloud também arranca por cima de um boot image MDT ou ConfigMgr existente: abrir a consola do WinPE (F8 ou "Exit to Command Prompt") e lançar:

# Dentro do WinPE do MDT/ConfigMgr
Start PowerShell
Deploy-OSDCloud

O módulo descarrega-se em tempo de arranque e o Deploy-OSDCloud abre a interface de implementação sem infraestrutura própria.

6. Lançar a instalação com Start-OSDCloud

No modo interactivo, o GUI cobre a escolha de versão, edição, activação, língua e driver pack:

# No WinPE, GUI interactivo
Start-OSDCloudGUI

O GUI mostra informação do dispositivo (TPM 2.0, compatibilidade Autopilot) e aceita versão (por defeito a mais recente em General Availability — Windows 11 25H2 na altura de escrita), edição (Pro), língua (en-us por defeito — mudar para pt-PT) e driver pack escolhido automaticamente pelo modelo detectado (Deploy-OSDCloud Overview). O Start descarrega o ESD do Windows 11 dos servidores Microsoft, aplica o driver pack e o autounattend.xml e reinicia.

Para reposição de máquinas em série, o modo zero touch dispensa o GUI:

# No WinPE, zero touch: sem perguntas, sem confirmação de Clear-Disk
Start-OSDCloud -OSName 'Windows 11 25H2 x64' -OSEdition Pro -OSActivation Retail -OSLanguage pt-pt -ZTI

O parâmetro -ZTI assume os valores por defeito para o que não foi indicado e salta a confirmação de Clear-Disk — a instalação arranca de imediato.

⚠ Atenção: com -ZTI o disco é limpo sem confirmação — em conjunto com WillWipeDisk=true, o USB torna-se uma máquina de apagar discos.

7. Verificar a máquina após a instalação

Após o primeiro arranque, confirmar o estado base e a preparação para gestão:

# Na máquina recém-instalada, em modo administrador
Get-ComputerInfo -Property OsName, OsVersion
Get-TimeZone
Get-LocalUser | Select-Object Name, Enabled
OsName   : Microsoft Windows 11 Pro
OsVersion: 10.0.26100
TimeZone : W. Europe Standard Time
Name       Enabled
----       -------
AdminLocal    True

A build 10.0.26100 é a família 24H2 — uma instalação 25H2 real mostraria 10.0.26200 (o 25H2 é um enablement package sobre a mesma base 26100, mas com número de build próprio). O fuso horário W. Europe e o utilizador local confirmam os restantes blocos do autounattend.

Em falha, o registo do Setup fica em C:\Windows\Panther\setupact.log e os logs do OSDCloud em X:\Windows\Temp no WinPE.

8. Sysprep e imagem de referência

O fluxo unattend+OSDCloud usa o ESD oficial e não precisa de imagem capturada. O sysprep mantém-se para o cenário de PC de referência com aplicações próprias (Office, aplicações internas) e captura em WIM: o generalize remove o SID e os dados específicos da máquina (Sysprep (System Preparation) Overview).

Num PC de referência em modo de auditoria (Ctrl+Shift+F3 na OOBE):

# No PC de referência, modo auditoria
cd C:\Windows\System32\sysprep
.\sysprep.exe /generalize /oobe /shutdown /unattend:C:\unattend.xml
  • /generalize — remove o SID e dados específicos da máquina, a imagem fica genérica
  • /oobe — o próximo arranque volta à experiência de primeira utilização
  • /shutdown — desliga a máquina para captura
  • /unattend — ficheiro com as acções do pass generalize

A captura faz-se com DISM em WinPE:

# Em WinPE, capturar a partição Windows
Dism /Capture-Image /ImageFile:D:\Win11Ref.wim /CaptureDir:C:\ /Name:"Win11 Ref"

Com o WIM capturado, a distribuição segue por OSDCloud ou fica como alternativa para máquinas sem ligação à internet em tempo real. A Microsoft desaconselha o sysprep em máquinas já entregues e em uso — é ferramenta de preparação de imagens, não de manutenção.

9. USMT para migração de perfis

Em reposição de portáteis, os dados locais atravessam a instalação com o User State Migration Tool (USMT), incluído no Windows ADK: ScanState lê o perfil da máquina antiga e LoadState escreve-o na nova (User State Migration Tool (USMT) overview).

# Na máquina antiga — capturar perfil do utilizador para partilha de rede
.\scanstate.exe \\server\mig$\user1 /i:migdocs.xml /i:migapp.xml /o /c
  • /i:migdocs.xml /i:migapp.xml — conjuntos de regras de migração (documentos e definições de aplicações)
  • /o — sobrescreve dados existentes no arquivo
  • /c — continua mesmo com erros não críticos

Na máquina nova, o LoadState escreve o arquivo no perfil destino, que tem de existir antes do comando. Em frotas com OneDrive Known Folder Move, o USMT perde peso: os perfis já estão na cloud e a reposição é reinstalação limpa e novo login.

10. Pós-instalação com Intune e Autopilot

A máquina saída do OSDCloud entra no Intune por dois caminhos: a inscrição manual em reposições avulsas, e o Windows Autopilot — o hardware ID (hash do TPM + fabricante + serial) regista-se previamente no tenant e a OOBE detecta o registo, atribui o perfil de implementação e inscreve no Intune.

Fluxo para uma PME que vem do MDT:

O SetupComplete.cmd mínimo:

@echo off
REM Preparar a maquina para Autopilot
reg query HKLM\SOFTWARE\Microsoft\Provisioning\AutopilotSettings >nul 2>&1
if %errorlevel%==0 (
    echo Autopilot ja configurado
) else (
    echo A aguardar deteccao Autopilot na OOBE
)

O Intune fecha o circuito com BitLocker, conformidade, aplicações e updates. Num parque sem ConfigMgr, o OSDCloud na instalação e o Intune/Autopilot na gestão cobrem o ciclo de vida completo do endpoint.

Erros Comuns

Problema Causa Solução
O autounattend.xml não é processado Ficheiro mal nomeado (unattend.xml em vez de autounattend.xml) na raiz do USB, ou formato errado (UTF-16) Renomear para autounattend.xml, gravar em UTF-8 e colocar na raiz
O Setup para numa pergunta de língua ou partição Ficheiro de resposta sem o pass windowsPE válido ou mal formado Validar o XML num validador e comparar com o exemplo da doc Windows SIM
WillWipeDisk apagou o disco errado USB arrancado na máquina errada (dados pessoais) Confirmar o DiskID correcto e testar primeiro em equipamento de laboratório
OSDCloud não descarrega o ESD Sem internet no WinPE ou driver de rede em falta Confirmar o driver NIC no boot image e a ligação de rede antes do Start
Máquina não entra no Autopilot Hardware ID não registado ou grupo dinâmico sem máquina Confirmar o registo no portal e o grupo no Entra
Sysprep falha com "package changed" App da Store atualizada após o generalize Remover a app antes do sysprep ou recriar a imagem
Perfis não migram com USMT LoadState sem o utilizador destino criado Criar a conta local ou de domínio antes do LoadState

Checklist

  • [ ] autounattend.xml na raiz do USB com o nome exacto (UTF-8)
  • [ ] DiskConfiguration testada em máquina de teste — WillWipeDisk consciente
  • [ ] Selecção da imagem por IMAGE/NAME dentro do ESD multi-edição
  • [ ] DriverPack correcto no OSDCloud para cada modelo de portátil
  • [ ] Workspace em C:\OSDCloud, template WinPE escolhido e USB arrancável testado em máquina piloto
  • [ ] Instalação completa sem toque manual confirmada (ZTI ou GUI)
  • [ ] SetupComplete.cmd executado e a preparar o Intune/Autopilot
  • [ ] Hardware IDs Autopilot registados e atribuídos ao grupo Entra
  • [ ] Inscrição Intune confirmada no portal
  • [ ] WIM de referência (se aplicável) capturado em ambiente de auditoria
  • [ ] Migração USMT validada com perfil de utilizador real

Artigos Relacionados

Fontes Oficiais