Sysprep 0x80070003 su Windows Server 2019 clonato: come risolvere l’errore fatale EvtIntSysprepCleanup dei log eventi reindirizzati

Su Windows Server 2019 clonato, Sysprep può fallire con l’errore 0x80070003 durante la fase Cleanup quando i file .evtx degli Event Log sono stati reindirizzati fuori dal percorso predefinito. In questa guida spiego causa, diagnostica e fix definitivo, con procedure e script pronti all’uso.

Indice

Panoramica del problema

Errore: Sysprep si interrompe con codice 0x80070003 (ERRORPATHNOT_FOUND) durante la fase di pulizia (Cleanup), segnalando un fallimento del componente Microsoft‑Windows‑EventLog (EvtIntSysprepCleanup in wevtapi.dll).

Sintesi della causa

Una GPO (o uno script di configurazione) aveva reindirizzato i file di log evento da %SystemRoot%\System32\Winevt\Logs verso un disco persistente D:\. Durante la generalizzazione, Sysprep pretende la struttura predefinita sotto Winevt\Logs su %SystemRoot%. Non trovandola, la cleanup del componente Event Log va in errore e l’intero Sysprep fallisce.

Effetti tipici su sistemi clonati

  • L’unità di destinazione (D:\) può non esistere o avere ACL differenti, rendendo impossibile la creazione/apertura dei file .evtx previsti.
  • Alcuni channel personalizzati (es. Microsoft-Windows-*/Operational) risultano puntare a percorsi non validi.
  • La voce di log dichiara l’impossibilità di completare EvtIntSysprepCleanup.

Soluzioni tentate e risultato

TentativoAzioneEsito
Reset di SysprepModifica di HKLM\SYSTEM\Setup\Status\SysprepStatus\CleanupState da 2 a 7Irrisolutivo
Disattivazione Event LogDisabilitazione del servizio/chiavi di registroIrrisolutivo e rischioso
Ripristino percorso logSpostamento del server in un’OU senza GPO di reindirizzamento (log di nuovo in %SystemRoot%)Risolutivo: Sysprep completato con successo

Perché la fase Cleanup fallisce

Durante Generalize, Sysprep invoca routine interne (tra cui EvtIntSysprepCleanup) per riportare la macchina a uno stato “agnostico”. La componente Event Log ripristina e ripulisce la topologia predefinita dei log. Se i canali puntano a un percorso alternativo (es. D:\EventLogs\*.evtx) e quel percorso è inesistente/non raggiungibile o semplicemente diverso dal default, il controllo fallisce con ERRORPATHNOT_FOUND (0x80070003).

Indicatori chiave nei log

  • setupact.log e setuperr.log (cartella C:\Windows\System32\Sysprep\Panther) con riferimenti a wevtapi.dll / EvtIntSysprepCleanup.
  • Voci in Event Viewer che menzionano Windows Event Log e file non trovati.

Diagnosi rapida e conferma causa

  1. Apri i log di Sysprep: notepad C:\Windows\System32\Sysprep\Panther\setupact.log notepad C:\Windows\System32\Sysprep\Panther\setuperr.log Cerca riferimenti a wevtapi, EvtIntSysprepCleanup, ERRORPATHNOT_FOUND.
  2. Elenca e interroga i canali Event Log con wevtutil: wevtutil el > C:\Temp\channels.txt for /f "usebackq delims=" %c in ("C:\Temp\channels.txt") do @wevtutil gl "%c" | findstr /i "logfile logfilename path file" Controlla se i canali puntano a percorsi fuori da %SystemRoot%\System32\Winevt\Logs.
  3. Verifica nel Registro i canali: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\* Accertati che il valore File (talvolta indicato come LogFilePath) punti a %SystemRoot%\System32\Winevt\Logs\*.evtx.
  4. Raccogli l’RSOP per confermare il reindirizzamento via GPO/script: gpresult /h C:\Temp\gp.html && start C:\Temp\gp.html

Procedura consigliata (risoluzione definitiva)

  1. Ispeziona i log di Sysprep (setupact.log, setuperr.log) per identificare il modulo bloccante (EvtIntSysprepCleanup).
  2. Controlla i canali Event Log in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\* e assicurati che il valore File/LogFilePath punti al percorso predefinito.
  3. Se è attivo il reindirizzamento tramite GPO o script:
    • rimuovilo temporaneamente prima di eseguire Sysprep (sposta il computer in un’OU “quarantena” senza GPO e forza gpupdate /force), oppure
    • ripristina i canali manualmente con: wevtutil sl <Channel> /lfn:%SystemRoot%\System32\Winevt\Logs<Channel>.evtx (vedi script più robusti qui sotto per gestire i nomi con /).
  4. Riavvia il server e riesegui Sysprep con Generalize + Shutdown.
  5. Dopo la creazione dell’immagine, riapplica il reindirizzamento dei log se necessario (preferibilmente con script idempotenti che rispettino Sysprep).

Ripristino via GPO: come farlo senza rischi

Se il reindirizzamento è stato introdotto da policy, la via più pulita è isolare temporaneamente il server:

  1. Crea un’OU “Sysprep-Bypass” senza le GPO di logging.
  2. Sposta l’oggetto computer del server nell’OU.
  3. Esegui: gpupdate /force gpresult /r per verificare che le GPO non siano più applicate.
  4. Conferma che C:\Windows\System32\Winevt\Logs contenga i principali .evtx (Application, Security, System, Setup, ecc.). In caso manchino, crea la cartella e lascia che il servizio Event Log rigeneri i file all’avvio.

Nota: evitare di disattivare il servizio Windows Event Log (eventlog): è un prerequisito per Sysprep e per innumerevoli componenti di sistema.

Ripristino manuale dei canali: script e comandi utili

Controllo canali “non conformi”

Questo script PowerShell elenca i canali la cui destinazione non è la cartella predefinita:

$default = "$env:SystemRoot\System32\Winevt\Logs"
Get-WinEvent -ListLog * | Where-Object {
  $.LogFilePath -and ($.LogFilePath -notlike "$default*")
} | Select-Object LogName, LogFilePath | Format-Table -Auto

Reset massivo (gestione nomi con “/”)

I canali con nomi del tipo Microsoft-Windows-TaskScheduler/Operational usano nei file %4 al posto di /. Lo script seguente effettua il reset prudente solo dove necessario:

$default = "$env:SystemRoot\System32\Winevt\Logs"
$changed = @()
Get-WinEvent -ListLog * | ForEach-Object {
  $channel = $_.LogName
  $current = $_.LogFilePath
  if (-not $current -or ($current -notlike "$default*")) {
    $safeName = ($channel -replace '/', '%4') + '.evtx'
    $target = Join-Path $default $safeName
    Write-Host "Reset: $channel => $target"
    wevtutil sl "$channel" /lfn:"$target" | Out-Null
    $changed += [PSCustomObject]@{ Channel=$channel; From=$current; To=$target }
  }
}
$changed | Format-Table -Auto

Suggerimento: esegui prima una dry-run rimuovendo il comando wevtutil sl e stampando solo i percorsi per revisione.

Comandi “a colpo singolo”

wevtutil gl System
wevtutil gl Application
wevtutil gl Security
wevtutil gl Setup

wevtutil sl System /lfn:%SystemRoot%\System32\Winevt\Logs\System.evtx
wevtutil sl Application /lfn:%SystemRoot%\System32\Winevt\Logs\Application.evtx
wevtutil sl Security /lfn:%SystemRoot%\System32\Winevt\Logs\Security.evtx
wevtutil sl Setup /lfn:%SystemRoot%\System32\Winevt\Logs\Setup.evtx

Verifica post‑ripristino

  1. Riavvia il server e controlla che il servizio Windows Event Log sia In esecuzione (services.msc o Get-Service eventlog).
  2. Conferma che i principali .evtx in Winevt\Logs crescano di dimensioni dopo qualche minuto.
  3. Riesegui Sysprep: %WINDIR%\System32\Sysprep\Sysprep.exe /generalize /oobe /shutdown
  4. Esamina nuovamente setupact.log e setuperr.log per assicurarti che non compaiano più errori di path.

Buone pratiche per evitare ricadute

  • Esegui Sysprep prima di installare agent, antivirus, backup o componenti che applicano configurazioni persistenti (incluse modifiche ai log).
  • Conserva i log di Sysprep (archiviali con la build dell’immagine): permettono diagnosi rapide su problemi ricorrenti.
  • Automatizza con Task Sequence (MDT/SCCM/Intune): durante Generalize applica step che disabilitino temporaneamente policy o servizi critici (reindirizzamento log incluso) e li ripristinino solo alla fine del Specialize/OOBE.
  • Evita di spostare permanentemente i log su unità non garantite nella golden image (es. volumi dati che potrebbero non esistere negli ambienti di destinazione).
  • Documenta il mapping dei canali: se proprio devi reindirizzare, usa script idempotenti e prevedi una routine di “reset pre‑Sysprep”.

Domande frequenti (FAQ)

Posso “forzare” Sysprep cambiando solo CleanupState?

No. Alterare CleanupState o altri flag può far ripartire Sysprep, ma la causa radice rimane: al primo controllo di Event Log tornerai al medesimo errore.

Disabilitare il servizio Event Log aiuta?

È sconsigliato: molti componenti, incluso Sysprep, dipendono da eventlog. Disabilitarlo introduce instabilità e non risolve la mancanza del percorso predefinito.

Il problema riguarda solo Windows Server 2019?

La dinamica è replicabile anche su altre versioni (es. 2016/2022) se si altera la posizione dei log. Questa guida è scritta sul caso concreto di Windows Server 2019 clonato.

Posso mantenere il reindirizzamento dopo l’immagine?

Sì, ma solo dopo aver completato Sysprep. Reapplicalo nel post‑deployment (primo avvio) tramite GPO o script di provisioning.

Checklist operativa (rapida)

  • Leggi setupact.log e setuperr.log → identifica EvtIntSysprepCleanup.
  • Controlla i canali in WINEVT\Channels → verifica File/LogFilePath.
  • Rimuovi temporaneamente il reindirizzamento (OU senza GPO) o resetta i canali con wevtutil sl.
  • Verifica che %SystemRoot%\System32\Winevt\Logs contenga i .evtx principali.
  • Riavvia → esegui Sysprep con Generalize + Shutdown.
  • Reapplica il reindirizzamento solo dopo la creazione dell’immagine.

Appendice: percorsi e file utili

ElementoPercorso/ComandoNote
Cartella log Eventi (default)%SystemRoot%\System32\Winevt\LogsDeve essere presente e scrivibile.
Log SysprepC:\Windows\System32\Sysprep\Panther\setupact.log
C:\Windows\System32\Sysprep\Panther\setuperr.log
Cerca wevtapi.dll, EvtIntSysprepCleanup.
Registro canaliHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\*Valore chiave: File (o LogFilePath).
Elenco canaliwevtutil elElenca tutti i canali registrati.
Dettagli canalewevtutil gl <Channel>Mostra percorso file e stato.
Imposta log filewevtutil sl <Channel> /lfn:<PercorsoEvtx>Usa %4 al posto di / nei nomi file.
Report GPOgpresult /h C:\Temp\gp.htmlConferma se c’è un reindirizzamento attivo.

Riepilogo finale

Se Sysprep su Windows Server 2019 clonato fallisce con 0x80070003 e riferimento a EvtIntSysprepCleanup, la causa più probabile è il reindirizzamento dei log eventi fuori da %SystemRoot%\System32\Winevt\Logs. Il fix pulito è ripristinare temporaneamente i percorsi di default (rimuovendo la GPO o eseguendo il reset dei canali), riavviare e rieseguire Sysprep (Generalize + Shutdown). Una volta creata l’immagine, potrai reapplicare il reindirizzamento in sicurezza. Segui la checklist e, se gestisci immagini a scala, automatizza i passaggi in una task sequence per eliminare definitivamente questo blocco.


Procedura consigliata (riassunto puntuale)

  1. Verificare i log di Sysprep (setupact.log, setuperr.log).
  2. Controllare HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\* e il valore File/LogFilePath.
  3. Se c’è reindirizzamento via GPO/script:
    • rimuoverlo temporaneamente prima di Sysprep, oppure
    • ripristinare manualmente ogni canale: wevtutil sl <Channel> /lfn:%SystemRoot%\System32\Winevt\Logs<Channel>.evtx
  4. Riavviare e rieseguire Sysprep con Generalize + Shutdown.
  5. Reapplicare il reindirizzamento dei log solo a immagine creata.

Buone pratiche supplementari

  • Eseguire Sysprep prima di installare agent, antivirus, backup o altre configurazioni persistenti.
  • Conservare i log di Sysprep per diagnosi future.
  • Valutare l’uso di una task sequence (MDT/SCCM/Intune) che disabiliti temporaneamente policy o servizi critici durante la generalizzazione.
Indice