Windows Server 2022: come risolvere l’ora che torna in AM dopo ogni riavvio (w32time, NTP, VM, GPO)

L’orologio di Windows Server 2022 torna su un’ora “AM” non corretta dopo ogni riavvio? Questa guida pratica e completa spiega perché succede dopo l’upgrade da Windows Server 2008 e come risolvere definitivamente con verifiche, comandi e procedure passo‑passo.

Indice

Panoramica

Dopo l’aggiornamento da Windows Server 2008 a Windows Server 2022, alcuni amministratori osservano che, al termine di ogni riavvio, l’orologio di sistema non mantiene l’ora corretta e torna su un valore “AM” (tipicamente 12 ore indietro). Il fenomeno si presenta anche dopo generiche azioni di troubleshooting e può colpire sia server stand‑alone sia membri di dominio o controller di dominio virtualizzati.

La causa, quasi sempre, è una sincronizzazione dell’ora errata nelle primissime fasi di boot (o subito dopo il logon del servizio), dovuta a configurazioni NTP non corrette, policy che sovrascrivono le impostazioni locali, sincronizzazione concorrente da parte dell’hypervisor o impostazioni di fuso orario/RTC incoerenti.

Sintomi tipici

  • L’ora torna sistematicamente al formato AM dopo il riavvio, spesso con uno scarto di 12 ore rispetto alla realtà.
  • Gli Event Viewer mostrano eventi del servizio Tempo di Windows (W32Time) legati a sincronizzazioni fallite o fonti non raggiungibili.
  • All’avvio in modalità provvisoria con rete l’orologio talvolta resta corretto, segnalando l’intervento di software terzo in ambiente normale.
  • Su macchine virtuali, la modifica dell’ora coincide con l’attivazione dei servizi di integrazione (Hyper‑V) o degli strumenti dell’host (VMware Tools) subito dopo il boot.

Cause più probabili, a colpo d’occhio

IndizioPossibile causaCome confermare
Scarto fisso di 12 oreFuso orario non corretto o impostazione RTC/UTC non coerentetzutil /g e controllo chiave RealTimeIsUniversal
Ora corretta fino al login, poi cambiaGPO o software di terze parti che riscrive l’oragpresult /H, avvio in Safe Mode with Networking
Server in dominioSincronizzazione da origine sbagliata (non dal PDC)w32tm /monitor e w32tm /query /source
Macchina virtualeTime sync dell’host sovrascrive l’ora del guestVerifica servizi di integrazione Hyper‑V/VMware Tools
Eventi “Time‑Service” ricorrentiFonte NTP irraggiungibile o configurazione corrottaw32tm /query /status, w32tm /resync, registro eventi

Soluzioni e verifiche consigliate

Area da verificareAzione praticaPerché è rilevante
Servizio Windows Time (w32time)Assicurarsi che il servizio sia impostato su Automatico e In esecuzione (services.msc).Se il servizio non parte all’avvio, il server non aggiorna l’ora da una fonte attendibile.
Fonte di sincronizzazioneEseguire w32tm /query /status per confermare origine, modalità e precisione; se necessario reimpostare con w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org" e w32tm /resync.Un’origine NTP errata o inesistente può riportare l’orologio a un valore di default.
Integrazione in dominioSe il server è membro di dominio, verificare che sincronizzi dal PDC Emulator (w32tm /monitor).In AD solo il PDC dovrebbe prendere l’ora da internet; tutti gli altri membri ereditano da lui.
Firmware/driver aggiornatiInstallare l’ultima versione di BIOS/UEFI e dei driver di chipset, storage e rete.Bug nel firmware possono alterare l’RTC (real‑time clock) o la gestione dell’ora del sistema operativo.
Registro eventiIn Event Viewer → Windows Logs → System filtrare per W32Time o ID evento 24xx, 19x, 134.Gli errori “Time‑Service” spesso indicano problemi di reachability dell’NTP o di diritti di scrittura sul registro di sistema.
Criteri di gruppoIn gpedit.msc o tramite RSoP controllare se esiste un criterio che forza un server NTP diverso o disattiva il servizio.Un GPO mal configurato può sovrascrivere la configurazione locale a ogni riavvio.
Modalità provvisoria con reteRiavviare in Safe Mode with Networking e verificare se l’orario rimane corretto.Esclude software di terze parti (antivirus, agent di backup, strumenti di gestione) che possano riscrivere l’ora.

Controlli fondamentali su fuso orario e formato

Prima di intervenire sul servizio tempo, assicurarsi che la rappresentazione dell’ora non sia semplicemente un problema di formato AM/PM:

  • Verificare in Impostazioni → Data/ora che il fuso orario sia corretto e che “Imposta fuso orario automaticamente” sia disattivato se non necessario.
  • Per accertarsi che l’orario reale non sia solo “etichetta AM/PM”, usare il formato a 24 ore: Get-Date -Format "HH:mm:ss (dd/MM/yyyy)"
  • Controllare rapidamente il fuso: tzutil /g

Conflitti con l’orologio hardware (RTC) e UTC

Se durante l’upgrade o in passato è stata impostata la chiave RealTimeIsUniversal, Windows può interpretare l’RTC del BIOS come UTC. Con un fuso orario impostato localmente, ogni riavvio può introdurre uno scarto (tipicamente 1–2 ore, ma può apparire come 12h a seconda del fuso e dell’ora legale):

reg query "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal

Se il valore è 0x1 e non si desidera utilizzare RTC in UTC, impostare a 0 o rimuovere la voce (riavvio richiesto):

reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 0 /f

Server in dominio: linee guida corrette

  • PDC Emulator del dominio: deve sincronizzarsi da fonti NTP esterne affidabili (più peer, con flag client). Esempio: w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org,0x8 1.pool.ntp.org,0x8" /reliable:yes /update net stop w32time & net start w32time w32tm /resync /force
  • Membri di dominio (inclusi server applicativi): devono ereditare dal dominio, non da internet: w32tm /config /syncfromflags:domhier /update w32tm /resync
  • Verifica e diagnosi rapida: w32tm /query /status w32tm /query /source w32tm /monitor

Macchine virtuali: chi comanda l’ora?

Su VM, l’host può imporre l’ora al guest al boot o alla ripresa da sospensione:

  • Hyper‑V: nelle impostazioni della VM disabilitare “Time Synchronization” se il guest è un domain controller o se si vuole che l’ora derivi esclusivamente da w32time. Assicurarsi che l’host sincronizzi da una fonte NTP corretta.
  • VMware: in VMware Tools disabilitare l’opzione “Synchronize guest time with host” quando la sorgente tempo deve essere il dominio o un NTP interno.
  • In ambienti cluster o con snapshot, prevenire il “time drift” evitando ripristini di stato che riportino anche l’ora.

Rete e firewall

La sincronizzazione NTP usa UDP/123. Un firewall o un IPS che blocca o ritarda i pacchetti NTP può causare desincronizzazioni improvvise. Controllare anche la latenza e i jitter del link verso i peer NTP: un percorso instabile può far rifiutare l’aggiornamento.

Guida passo‑passo alla correzione

Verifica del servizio e avvio automatico

Get-Service w32time | Format-Table Status, StartType
Set-Service -Name w32time -StartupType Automatic
Start-Service w32time

Impostare il servizio su Automatico accelera la disponibilità della sincronizzazione nella finestra critica post‑boot.

Controllo della configurazione corrente

w32tm /query /configuration
w32tm /query /peers
w32tm /query /status

Verificare che la voce Type sia coerente (NTP per PDC, NT5DS per membri di dominio, NTP con peer manuali per server stand‑alone).

Reimpostazione sicura della sincronizzazione

Per ripulire configurazioni residue dall’upgrade:

net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org"
w32tm /resync /nowait

Convalida del fuso e dell’ora legale

tzutil /g
tzutil /s "W. Europe Standard Time"

Sostituire il fuso con quello corretto per il vostro ambiente. Evitare l’impostazione automatica del fuso nelle VM ospitate in data center multi‑regione.

Controllo di GPO e RSoP

gpresult /H C:\Temp\rsop.html
In rsop.html controllare:
Computer Configuration → Administrative Templates → System → Windows Time Service

Disattivare policy conflittuali che sostituiscono la sorgente NTP o che forzano stati del servizio non desiderati.

Analisi del registro eventi

  • Windows Logs → System: filtrare Source: W32Time.
  • Applications and Services Logs → Microsoft → Windows → Time‑Service: cercare errori/avvisi all’avvio.
  • Security: l’evento “System time was changed” (ID 4616) indica chi/che cosa ha modificato l’ora.

Safe Mode con rete

Se in modalità provvisoria l’ora resta corretta, indagare su agent antivirus, strumenti di gestione, software di backup o monitoraggio che eseguono un “time set” all’avvio. Disabilitare uno alla volta fino a identificare il responsabile.

Attività pianificate e trigger di sistema

Controllare le attività pianificate di sincronizzazione:

schtasks /query /fo LIST /v | findstr /I "Time Sync w32time"

In Task Scheduler → Microsoft → Windows → Time Synchronization verificare che i trigger non siano stati modificati o duplicati da software terzi.

Script PowerShell “tutto in uno” per audit e fix

Lo script seguente raccoglie informazioni chiave e, opzionalmente, applica alcune correzioni standard (nessuna modifica distruttiva senza interazione):

$report = [ordered]@{}
$report.TimeNow = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss zzz")
$report.TZ = (tzutil /g)
$w32 = Get-Service w32time
$report.W32TimeStatus = "$($w32.Status) / $($w32.StartType)"
$report.Source = (w32tm /query /source) 2>&1
$report.Status = (w32tm /query /status) 2>&1
$report.Config = (w32tm /query /configuration) 2>&1
$rtu = try { reg query "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal 2>1 } catch {}
$report.RealTimeIsUniversal = $rtu
$report.HyperVIntegration = (Get-Service -Name vmictimesync -ErrorAction SilentlyContinue) | ForEach-Object { "$($.Status) / $($.StartType)" }
$report.VMwareTools = (Get-Service -Name VMTools -ErrorAction SilentlyContinue) | ForEach-Object { "$($.Status) / $($.StartType)" }
$report | Format-List

Esempio di fix non distruttivo:

if ($w32.StartType -ne 'Automatic') { Set-Service w32time -StartupType Automatic } 

Consigli pratici aggiuntivi

Time zone e ora legale

  • Impostare manualmente il fuso corretto e disattivare l’opzione automatica se il server non è mobile.
  • Se il problema sembra legato al passaggio AM/PM e non ai minuti, controllare l’allineamento fuso‑UTC/RTC.

RTC del BIOS

  • Entrare nel firmware e verificare che l’orologio hardware sia preciso prima di avviare Windows.
  • Una batteria CMOS scarica in genere riporta date molto vecchie: se il sintomo è solo “AM/PM”, è meno probabile ma da escludere comunque.

Virtualizzazione

  • Se la VM deve seguire il dominio, disattivare la sincronizzazione dall’host o assicurarsi che l’host stesso sia accuratamente sincronizzato.
  • Standardizzare la strategia: o solo dominio, o solo host, ma mai entrambe contemporaneamente.

Reset completo della configurazione W32Time

net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org"
w32tm /resync /nowait

Questa procedura ricrea le chiavi di registro del servizio, utile se l’upgrade ha lasciato impostazioni corrotte.

Errori comuni da evitare

  • Configurare peer Internet su ogni server del dominio. Solo il PDC Emulator dovrebbe rivolgersi all’esterno; tutti gli altri ereditano.
  • Lasciare attiva la sync dell’hypervisor su DC o membri di dominio. Genera “lotta” tra fonti e salti d’ora al riavvio.
  • Affidarsi a un solo peer NTP. Usare sempre più fonti, preferibilmente geograficamente vicine.
  • Ignorare il fuso. Un fuso sbagliato fa sembrare corretto un orario errato o viceversa.

Checklist rapida prima di dichiarare “risolto”

  1. Servizio w32time in Automatico e In esecuzione.
  2. Fuso orario corretto; nessun RealTimeIsUniversal indesiderato.
  3. Peer NTP configurati correttamente (PDC: peer esterni; membri: domhier).
  4. UDP/123 consentito; latenza verso i peer accettabile.
  5. Nessuna policy o tool che sovrascrive l’ora al boot.
  6. Su VM, strategia di sincronizzazione unica e coerente.
  7. Event Viewer senza nuovi errori “Time‑Service” dopo 2–3 riavvii.

Domande frequenti

È solo un problema di visualizzazione AM/PM?
Verificare con Get-Date -Format "HH:mm:ss". Se in 24 ore l’orario è corretto ma la system tray mostra AM/PM, correggere le impostazioni di formato data/ora del profilo.

Posso usare server NTP pubblici su tutti i server?
Meglio di no in dominio. Il PDC si allinea all’esterno; gli altri ereditano per coerenza Kerberos/AD.

Quanto spesso deve sincronizzare w32time?
Dipende dalla stabilità dell’RTC e dall’ambiente. In generale, l’intervallo predefinito è adeguato; evitare polling eccessivi per non introdurre jitter.

Come capisco chi cambia l’ora?
Abilitare l’auditing: in Local Security Policy → Advanced Audit Policy → System attivare “Audit Security State Change” e cercare l’evento Security ID 4616.

Strategia di risoluzione consigliata

In ordine di impatto e probabilità:

  1. Allineare fuso e formato (tzutil) e verificare che non sia solo un tema di visualizzazione.
  2. Impostare w32time su Automatico, controllare /source e /status, quindi reimpostare la sorgente come da ruolo (PDC/membro/stand‑alone).
  3. Eliminare interferenze: GPO, software terzi, integrazione hypervisor.
  4. Ripulire la configurazione con unregister/register e riconfigurare i peer.
  5. Controllare RTC/BIOS e l’eventuale uso di RealTimeIsUniversal.

Conclusione

Il comportamento “l’ora torna in AM dopo ogni riavvio” è quasi sempre il sintomo di una sincronizzazione eseguita male nei primi secondi di vita del sistema. La soluzione passa per tre azioni chiave: garantire l’avvio corretto del servizio Windows Time, indicare una fonte NTP/dominio affidabile coerente con il ruolo del server e assicurarsi che nessun GPO, software o hypervisor riscriva l’ora. Eliminati questi fattori, l’ora rimane stabile e i riavvii non introducono più lo scarto “AM/PM”.


Appendice: comandi utili

# Stato e sorgente
w32tm /query /status
w32tm /query /source
w32tm /monitor

Config

w32tm /query /configuration
w32tm /dumpreg /subkey:parameters

Reimpostazione peer (stand‑alone)

w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org,0x8 1.pool.ntp.org,0x8" /update
w32tm /resync /force

Eredita dal dominio (membro)

w32tm /config /syncfromflags:domhier /update
w32tm /resync

Fuso orario

tzutil /g
tzutil /s "W. Europe Standard Time"

Auditing

wevtutil qe Security /q:"*[System[(EventID=4616)]]" /f:text /c:5

Safe Mode with Networking

bcdedit /set {default} safeboot network
shutdown /r /t 0 

Riepilogo dei suggerimenti aggiuntivi originali

Time zone e ora legale

  • Controllare che il fuso orario sia corretto in Settings → Time & Language → Date & Time e che l’opzione “Set time zone automatically” sia disattivata se non necessaria.
  • Se il problema sembra legato al passaggio AM/PM piuttosto che ai minuti, un’impostazione errata di fuso/ora legale può essere responsabile.

RTC del BIOS

  • Entrare nel firmware e verificare che l’orologio hardware (RTC) sia preciso prima di avviare Windows.
  • Una batteria CMOS scarica può far perdere l’ora, ma in genere riporta una data molto vecchia: se il fenomeno è solo AM/PM, la batteria è poco probabile ma vale comunque la pena escluderla.

Virtualizzazione

  • Se il server è una macchina virtuale, disabilitare la sincronizzazione dell’ora dell’host (VMware Tools, Hyper‑V Time Synchronization Service) oppure assicurarsi che l’host stesso sia sincronizzato con una fonte NTP affidabile.

Reset completo della configurazione W32Time

net stop w32time
w32tm /unregister
w32tm /register
net start w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org"
w32tm /resync /nowait

In breve: definire con precisione chi fornisce l’ora (NTP o dominio), quando lo fa (startup del servizio) e come evitare che altri componenti la riscrivano. Con questa disciplina, il problema dell’ora che passa a “AM” dopo ogni riavvio si chiude definitivamente.

Indice