Qualche giorno fa mi sono imbatutto in un problema davvero strano.
All’interno di un azienda erano presenti circa 35 client e 10 server.
Tutti questi device erano configurati tramite opportuna GPO per collegarsi direttamente al Server WSUS ma sulla console del WSUS venivano visualizzati solo 5 client e 4 servers.
Dopo un po di verifiche ho scoperto che i PC e i server che non comparivano all’interno della console del WSUS avevano tutti lo stesso SusClientId.
I server WSUS utilizzano SusClientId per identificare dispositivi univoci e quindi associare il nome host del computer all’identificatore univoco per scopi di visualizzazione facilmente riconoscibili.
Poiché più di un sistema ha lo stesso SusClientId, il server WSUS sostituisce il nome host dell’oggetto computer con l’ultimo nome host che ha comunicato con il server.
Questo causa la sparizione degli oggetti Computer dalla console WSUS.
Per verificare il SusClientId di un server o di un PC basta posizionarsi nel seguente path nel registro di sistema
0 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate |
Quindi verificare la chiave denominata SusClientId
Spesso questo problema è dovuto alla clonazione o all’acquisizione di immagini dei computer o dei server.
I sistemi che rappresentano l’immagine “Gold” vengono spesso creati in un ambiente che consente al sistema di comunicare con qualsiasi server WSUS, incluso Windows Update di Microsoft.
Nel momento in cui un sistema client comunica con un server Windows Update, crea 2 chiavi di registro che sono essenzialmente un identificatore di sicurezza (SID) [SusClientId] e una chiave di convalida [SusClientIDValidation] che fornisce un identificatore hardware univoco in forma binaria.
L’agente di Windows Update dovrebbe utilizzare una routine di convalida dell’hardware per determinare se l’hardware del client corrente è cambiato da quando è stato creato il valore SusClientId e, in caso affermativo, “si suppone che” rigenera sia SusClientId che SusClientIDValidation.
RISOLUZIONE DEL PROBLEMA SU WINDOWS SERVER 2016/2019 E WINDOWS CLIENT 10/11
Per risolvere questo problema basta rimuovere le seguenti chiavi di registro, se presenti:
0
1
2
3
|
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\AccountDomainSid (di solito si verifica un errore ma è incluso per essere totalmente inclusivo ma non lo vedo da prima del 2005)
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\PingID (di solito si verifica un errore ma è incluso per essere totalmente inclusivo, ma non lo vedo da prima del 2005)
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\SusClientId (questo è il responsabile della maggior parte dei problemi: duplicare le voci SusClientId su più client)
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\SusClientIDValidation (questo è anche responsabile di SusClientId)
|
Di seguito elenco i comandi da dare sul PC o Server affetto dal problema.
I comandi vanno eseguiti in sequenza da un prompt di Dos con diritti amministrativi
0
1
2
3
4
5
6
7
8
9
10
|
net stop bits
net stop wuauserv
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v AccountDomainSid /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v PingID /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientIDValidation /f
rd /s /q "C:\WINDOWS\SoftwareDistribution"
net start bits
net start wuauserv
wuauclt /resetauthorization /detectnow
usoclient.exe startscan
|
NOTA BENE: è possibile inserire questi comandi all’interno dì uno script .BAT ed eseguirlo tramite GPO su tutti i device interessati.
E’ possibile fare la stessa cosa utilizzando una powershell e quindi con i comandi riportati di seguito:
0
1
2
3
4
5
|
Stop-Service -Name BITS, wuauserv -Force
Remove-ItemProperty -Name AccountDomainSid, PingID, SusClientId, SusClientIDValidation -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\ -ErrorAction SilentlyContinue
Remove-Item "$env:SystemRoot\SoftwareDistribution\" -Recurse -Force -ErrorAction SilentlyContinue
Start-Service -Name BITS, wuauserv
wuauclt /resetauthorization /detectnow
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
|
ATTENZIONE: È meglio rimuovere prima i dispositivi interessati da WSUS MMC. Come mai? Abbiamo visto lo script lato client sopra eseguito e il problema persiste, tuttavia ogni volta che si elimina prima l’oggetto computer dalla console WSUS MMC e quindi si eseguono i comandi su OGNI sistema interessato, funziona sempre, quindi si consiglia solo di rimuovere prima i computer interessati e quindi di eseguire lo script lato client.
RISOLUZIONE DEL PROBLEMA SU WINDOWS SERVER 2008/2012/2012 R2 E WINDOWS CLIENT 7/8
Per risolvere questo problema basta rimuovere le seguenti chiavi di registro, se presenti:
0
1
|
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\SusClientId (questo è il responsabile della maggior parte dei problemi: duplicare le voci SusClientId su più client)
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\SusClientIDValidation (questo è anche responsabile di SusClientId)
|
Di seguito elenco i comandi da dare sul PC o Server affetto dal problema.
I comandi vanno eseguiti in sequenza da un prompt di Dos con diritti amministrativi
0
1
2
3
4
5
6
7
8
9
|
net stop bits
net stop wuauserv
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientIDValidation /f
rd /s /q "C:\WINDOWS\SoftwareDistribution"
net start bits
net start wuauserv
wuauclt /detectnow
wuauclt /reportnow
wuauclt /downloadnow
|
UTILIZZO DELL’ESEGUIBILE USOCLIENT.EXE
A partire da Windows 10 e Windows Server 2016 il comando wuauclt non è più supportato. Al sui posto è possibile utilizzare l’eseguibile UsoClient.exe che si trova in C:\Windows\System32
USO è l’acronimo di Updade Session Orchestrator ed è l’eseguibile che viene richiamato quando effettuiamo le varie operazione dall’interfaccia grafica. Di seguito sono riportate le opzioni disponibili per il comando:
StartScan: Utilizzato per avviare la scansione
StartDownload: Utilizzato per avviare il download delle patch
StartInstall: Utilizzato per installare le patch scaricate
RefreshSettings: Aggiorna le impostazioni se sono state apportate modifiche
StartInteractiveScan: Può richiedere l’input dell’utente e/o aprire finestre di dialogo per mostrare lo stato di avanzamento o segnalare errori
RestartDevice: Riavvia il dispositivo per completare l’installazione degli aggiornamenti
ScanInstallWait: Effettua la scansione, il download e l’installazione degli aggiornamenti.
ResumeUpdate: Riprendi l’installazione dell’aggiornamento all’avvio
Essendo questo comando pensato per essere richiamato principalmente dall’interfaccia grafica non restituisce nessun output quando lo eseguiamo da linea di comando.
Questo sia in caso di esito positivo che negativo del comando e prestate attenzione al fatto che anche un errore di digitazione non restituisce nessun errore facendovi pensare che sta lavorando in background.
Possiamo comunque fare riferimento al seguente file di log C:\Windows\SoftwareDistribution\ReportingEvents.log per analizzare le varie operazioni effettuate dal servizio Windows Update.
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 Comments