Archives For Quest Kace

Un passo indietro: nei primi giorni di novembre ho pubblicato un articolo dedicato a un nuovo VBScript sviluppato per tenere d’occhio le installazioni degli agenti Kace nella rete aziendale, così da ricevere delle notifiche (mail) in caso di mancate installazioni o inventari non aggiornati. Trovi tutto qui:

Kace: un alert in caso di client mancante o inventario troppo vecchio

Cosa è cambiato rispetto al mese scorso? Quest (società separatasi da Dell nel 2016) ha rilasciato l’aggiornamento di Kace 8.0.318, il quale porta con sé anche il bundle di agenti 8.0.152. Questi ultimi, contrariamente al passato, si installeranno nella cartella %ProgramFiles%\Quest (%ProgramFiles(x86)%\Quest sui sistemi a 64 bit) anziché %ProgramFiles%\Dell. Il mio script, se distribuito sul tuo dominio, inizierà a inviarti delle notifiche per mancata installazione client, poiché anche il percorso nella %ProgramData% è variato (da %ProgramData%\Dell\KACE a %ProgramData%\Quest\KACE).

NotifyKace.vbs: nuova versione per gli agenti 8

Nello script pubblicato tra i miei Gist, avevo già previsto una banale variabile contenente la directory da monitorare, basterà variare quella per tornare a far funzionare il meccanismo, senza ulteriori falsi positivi (ne avrai ancora, di falsi positivi, se il client non avrà ancora ricevuto l’aggiornamento dell’agent alla versione 8.0.152, mettiti il cuore in pace). Ho lasciato stare il vecchio script (che si ferma così alla versione 0.2rev1) e ne ho salvato un altro (la 0.3), che trovi qui:

Per tutto il resto c’è MasterCard puoi consultare il vecchio articolo, tenendo presente che tutto resta identico ad eccezione delle cartelle del software (modifica Dell con Quest e il gioco è sempre fatto).

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

In seguito a una migrazione della virtual appliance di Kace, alcuni dei client dislocati sul territorio hanno perso “la retta via di casa“, non comunicando più correttamente con la console del software di Quest. Per questo motivo, dato che tutti eseguivano almeno uno script di logon, ho deciso di inserire un richiamo a un VBScript che ho sviluppato (prendendo spunto da moltissime fonti, riportate nei credits dello script, nda) e che si occupa di verificare che l’agente Kace sia installato (fondamentale) ein caso lo fosseche l’inventario ultimo non sia più vecchio di 10 giorni.

Kace: un alert in caso di client mancante o inventario troppo vecchio

A oggi i risultati sono stati molto positivi, abbiamo visto spuntare fuori diverse macchine sulle quali è poi bastato connettersi via prompt (niente che non possa essere eseguito da un PsExec) per mettere a posto le cose (te lo spiego più tardi).

La logica di funzionamento

Il principio dello script è semplice e si basa su un comportamento attuale dell’agente di Kace. Se questo è installato, vuol dire che tra i servizi attivi della macchina dovrà esserci Konea, nome assegnato già da Dell prima che Quest ereditasse il prodotto. Se hai l’agente Kace installato sulla tua macchina e vuoi fare un banale controllo, prova a lanciare un sc query Konea via prompt dei comandi, dovresti ottenere un risultato simile:

NOME_SERVIZIO: konea
 TIPO : 10 WIN32_OWN_PROCESS
 STATO : 4 RUNNING
 (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
 CODICE_USCITA_WIN32 : 0 (0x0)
 CODICE_USCITA_SERVIZIO : 0 (0x0)
 PUNTO_CONTROLLO : 0x0
 INDICAZIONE_ATTESA : 0x0

Detto ciò, si passa alla seconda verifica: un inventario sufficientemente aggiornato anche per coloro che magari non accendono il PC per qualche giorno (penso alle ferie nei periodi estivi o invernali, o magari a breve trasferte lavorative anche offline). Ho pensato quindi che 10 giorni fosse un corretto intervallo di tempo massimo, oltre il quale devo allarmare qualcuno affinché faccia un controllo sulla console.

Dato che in alcuni casi è necessario ignorare determinate macchine sulle quali ci si autentica con le proprie credenziali, lo script prevede anche delle esclusioni in base al nome macchina,ciò implica però che tu vada a utilizzare una nomenclatura ben precisa (altrimenti ti toccherà inserire una miriade di nomi diversi).

Lo script

Ho notato che l’agente di Kace aggiorna il file kinventory.db ogni volta che comunica il suo inventario completo. Per questo motivo, lo prendo come punto di riferimento e mi accerto che l’ultima data di modifica del file non sia più vecchia dell’intervallo stabilito (intervallo che tu, secondo una diversa esigenza o ragionamento, puoi chiaramente modificare).

Se anche questo controllo passa indenne, nessun problema. In caso contrario, spedirò una mail a un singolo destinatario o un gruppo di HelpDesk che possa far partire i controlli necessari.

Tradotto in codice (anche non elegante, non ottimizzato e chissà cos’altro ancora), questo è il risultato:

Cosa c’è da sapere, cosa dovrai modificare

I punti modificabili all’interno dello script sono diversi, alcuni necessari, altri meno (nel senso che puoi lasciarli invariati rispetto al mio suggerimento), andiamo con ordine.

  • sDirectoryPath = "C:\ProgramData\Dell\Kace": salvo modifiche da parte di Quest, la cartella dove risiede il DB di inventario è questa, e vale per Windows 7 o superiore. Se ci saranno modifiche in futuro, aggiornerò lo script e l’articolo, puoi starne certo.
  • iDaysOld = 10: modificando quel 10, modificherai i giorni oltre i quali allarmarsi per un possibile disallineamento dell’agente Kace rispetto alla console. Credo che il mio sia un giusto intervallo, ma ogni realtà è diversa, così come ogni esigenza.
  • exclusions = Array( "WIN7TEST", _: per ogni riga, potrai specificare una parte di nome che –nel caso in cui dovesse far parte dell’hostname– verrà ignorata, facendo chiudere in automatico lo script. Nello script di esempio pubblicato su Gist (quello che vedi poco sopra), ho pensato a macchine virtuali (o fisiche) che contengano nel loro nome WIN7TEST o WIN10TEST. Cambia quei nomi con ciò che ti interessa ignorare, altrimenti non curarti di questa porzione di codice e vai avanti.
  • Destination = "tuonome@contoso.com": ogni campo Destination (ce ne sono due, nda) dovrà contenere l’indirizzo di posta di chi riceverà la mail di alert in caso di problemi. Sostituisci quindi “tuonome@contoso.com” con un indirizzo di posta esistente e sensato.
  • objMessage.From = "Alert Kace <kacealert@contoso.com>: un po’ come sopra, anche se questo è in realtà l’indirizzo del mittente che invierà la mail. Può essere anche fittizio, ma occhio ai controlli antispam del tuo client di posta.
  • "smtp.contoso.com": sostituiscilo con l’indirizzo del tuo server SMTP, possibilmente interno alla tua rete.
ATTENZIONE: Nel caso in cui tu non avessi un SMTP interno alla tua rete aziendale, dovrai passare per un provider esterno. In questo caso, potresti dover utilizzare un’autenticazione per spedire posta. Dai un’occhiata alla pagina paulsadowski.com/wsh/cdo.htm per sapere come modificare lo script e procedere (oppure chiedi aiuto nell’area commenti del mio blog).

Fai molta attenzione. Come anticipato, ci sono due campi per Destination, objMessage.From e smtp.contoso.com. Lo script, salvo errori, ti consegnerà comodamente in Inbox delle mail di questo tipo:

Tocca ora a te collegarti alle macchine tramite prompt dei comandi e procedere con le opportune operazioni. Ti riepilogo brevemente in cosa potresti imbatterti.

Kace: amptools

Spostati nella cartella di installazione del Kace (C:\Program Files (x86)\Dell\KACE per i sistemi a 64 bit, C:\Program Files\Dell\KACE per quelli a 32) e procedi verificando la configurazione del tuo agente Kace. Questa è memorizzata nel file amp.conf che si trova nella %ProgramData%, ma puoi facilmente ottenerla lanciando il comando amptools get:

C:\Program Files (x86)\Dell\KACE>amptools get
[2017-11-06.09:05:23][AMPTools:AgentConfig::LogAll ] Agent Configuration Values
[2017-11-06.09:05:23][AMPTools:AgentConfig::LogAll ] KACE Agent version 7.2.10 Jun 5 2017
[2017-11-06.09:05:23][AMPTools:AgentConfig::LogAll ] ------------------------------------------------
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] debug: true
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] host: kace.contoso.com
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] weburl: https://kace.contoso.com
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] webport: 443
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] serverversion: 7.2.101
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] max download speed: unlimited
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] companyname: Contoso Corp.
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] splashtext: KACE Systems Management Appliance is verifying your system configuration and managing software updates. Please Wait...
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] processtimeout: 14400000
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] filetimeout: 86400
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] sslrequired: TRUE
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] verifyssl: FALSE
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] koneaport: 443
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] servercompress: TRUE
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] disablebootupsplash: FALSE
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] disableloginsplash: FALSE
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] disablewaitforbootuptasks: FALSE
[2017-11-06.09:05:24][AMPTools:AgentConfig::LogAll ] disablewaitforlogintasks: FALSE

Assicurati che i campi host e weburl siano corretti e, nel caso non lo fossero, procedi secondo un ragionamento semplice:

  • se la versione dell’agente è antecedente la 7, dovrai disinstallarlo, quindi installare la versione più recente, questo a causa di una incompatibilità con console esposte in HTTPS e porte diverse da quelle utilizzate in passato.
  • Se la versione è successiva alla 7, ti basterà lanciare una semplice riconfigurazione.

Disinstallazione

Senza muoverti dalla cartella nella quale ti trovi via prompt dei comandi, esegui un amptools uninstall all-kuid per rimuovere l’agente e pulire ogni configurazione.

C:\Program Files (x86)\Dell\KACE>amptools uninstall all-kuid
[2017-11-06.12:49:31][AMPTools:StopIfNeeded ] [Stopping Service]
Stopping ..
AMPWatchDog stopped successfully
[2017-11-06.12:49:31][AMPTools:StopKonea ] [Stopping konea]
[2017-11-06.12:49:31][AMPTools:StopKonea ] Service "konea" stopped.
Stopping ..
AMPAgent stopped successfully
AMPWatchDog already stopped
DeleteSvcWithName:AMPWatchDog uninstalled.
[2017-11-06.12:49:45][AMPTools:RemoveKonea ] [Stopping konea]
[2017-11-06.12:49:45][AMPTools:RemoveKonea ] Service "konea" uninstalled.
Removing KUID from registryRemove the entire data directory

A questo punto, lancia l’installazione del pacchetto MSI in maniera silente. L’agente, non appena installato, contatterà nuovamente la console e invierà il suo inventario aggiornato. Nell’esempio di seguito, tengo conto di un’installazione dell’agente eseguita da una cartella locale del PC (l’agente è stato precedentemente copiato), nulla ti vieta di lanciarla da un’unità di rete che dovrà però essere accessibile anche da prompt dei comandi:

msiexec /i ampagent-7.2.10-x86_kace.contoso.com.msi /quiet /qn /norestart

Ti ricordo che, nel caso ti sfuggisse o non lo sapessi affatto, potrai specificare l’indirizzo del tuo Kace direttamente nel nome del pacchetto MSI, così da evitare che venga richiesto a video. Ti basterà posporre l’URL al nome pacchetto, subito prima dell’estensione. Guarda tu stesso l’esempio poco sopra: il pacchetto originale si chiamava ampagent-7.1.62-x86.msi, modificandolo in ampagent-7.1.62-x86_kace.contoso.com.msi, questo proverà immediatamente a contattare kace.contoso.com per inviare il suo inventario.

L’operazione dura un paio di minuti circa. A quel punto vedrai comparire il PC nella tua console Kace, e potrai cancellare il pacchetto MSI dalla cartella locale del PC (ammesso tu l’abbia copiato prima).

Riconfigurazione

La riconfigurazione è cosa assai più semplice, perché non richiede che un solo comando da eseguire via prompt, senza necessità di disinstallare alcunché. Anche se l’agente non è aggiornato rispetto a quello distribuito da console, ma è già compatibile con le nuove porte usate dal servizio Konea, penserà lui stesso ad aggiornarsi quando sarà nuovamente collegato al tuo Kace.

Sempre da prompt dei comandi (e dalla cartella di installazione dell’agente Kace) lancia un amptools resetconf host=kace.contoso.com (sostituendo ovviamente l’URL con quello della tua console), il servizio verrà così riavviato e partirà utilizzando il nuovo indirizzo fornito:

C:\Program Files (x86)\Dell\KACE>amptools resetconf host=kbox.contoso.com
[2017-11-08.09:23:16][AMPTools:AgentTools::PerformRese] Resetting config file C:\ProgramData\Dell\KACE\amp.conf
[2017-11-08.09:23:16][AMPTools:AgentTools::PerformRetr] Removing previous certificate (if it exists): C
[2017-11-08.09:23:16][AMPTools:AgentTools::StopIfNeede] [Stopping Service]
Stopping ..
AMPWatchDog stopped successfully
Stopping ...
OfflineScheduler stopped successfully
[2017-11-08.09:23:36][AMPTools:KoneaTools::StopKonea ] [Stopping konea]
[2017-11-08.09:23:36][AMPTools:KLaunchClient::Launch ] KLaunchClient::Launch()
[2017-11-08.09:23:36][AMPTools:KLaunchClient::DumpStat] Launch State: Command="C:\Program Files (x86)\Dell\KACE\konea.exe" Arguments="-stop" WorkingDir="" Timeout=14400000 ShouldDetach=0 ShowWindow=0 Redirect_stdout=1 Redirect_stderr=0 Desktop=winsta0\default Using Wait_Override=0
[2017-11-08.09:23:36][AMPTools:KLaunchUtils::DoesToken] DoesTokenHaveLSAPriviledges returning: 0
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Laun] KLaunchClientImpl::Launch() DoesCurrentProcessHaveLSAPriviledges = false
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Laun] KLaunchClientImpl::LaunchNoSession()
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Setu] KLaunchClientImpl::SetupStartInfo *Don't CreateStdPipe StdIn Pipe (disabled)
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Laun] KLaunchClientImpl::LaunchNoSession - CreateProcess returned successfully
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Read] KLaunchClientImpl::ReadStdPipe End of ReadStdPipe method
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Proc] KLaunchClientImpl::ProcessResults - End
[2017-11-08.09:23:36][AMPTools:KoneaTools::StopKonea ] Service "konea" stopped.
[2017-11-08.09:23:36][AMPTools:AgentTools::StartIfNeed] [Starting Service]
OfflineScheduler started successfully
AMPWatchDog started successfully
[2017-11-08.09:23:36][AMPTools:KoneaTools::StartKonea ] [Starting konea]
[2017-11-08.09:23:36][AMPTools:KLaunchClient::Launch ] KLaunchClient::Launch()
[2017-11-08.09:23:36][AMPTools:KLaunchClient::DumpStat] Launch State: Command="C:\Program Files (x86)\Dell\KACE\konea.exe" Arguments="-start" WorkingDir="" Timeout=14400000 ShouldDetach=0 ShowWindow=0 Redirect_stdout=1 Redirect_stderr=0 Desktop=winsta0\default Using Wait_Override=0
[2017-11-08.09:23:36][AMPTools:KLaunchUtils::DoesToken] DoesTokenHaveLSAPriviledges returning: 0
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Laun] KLaunchClientImpl::Launch() DoesCurrentProcessHaveLSAPriviledges = false
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Laun] KLaunchClientImpl::LaunchNoSession()
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Setu] KLaunchClientImpl::SetupStartInfo *Don't CreateStdPipe StdIn Pipe (disabled)
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Laun] KLaunchClientImpl::LaunchNoSession - CreateProcess returned successfully
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Read] KLaunchClientImpl::ReadStdPipe End of ReadStdPipe method
[2017-11-08.09:23:36][AMPTools:KLaunchClientImpl::Proc] KLaunchClientImpl::ProcessResults - End
[2017-11-08.09:23:36][AMPTools:KoneaTools::StartKonea ] Service "konea" started.

In conclusione

Se dovessero servirti (o sei semplicemente curioso) trovi le opzioni da riga di comando degli “amptools” nella documentazione prodotto, ma dovrai avere un’utenza registrata per poterla consultare: support.quest.com/kace-systems-management-appliance/kb/146458.

Salvo errori o modifiche non eseguite, tutto dovrebbe funzionare a pieno regime, consentendoti di riportare sulla terra ferma le macchine che navigano altrove perché senza una rotta certa. Certo inizialmente potresti avere molte segnalazioni e ti sembrerà di aver fatto una stupidata e che forse “occhio non vede, cuore non duole” è un gran proverbio, ma pensandoci a mente fredda forse mi ringrazierai :-)

In caso di dubbi, o se volessi dare ulteriori suggerimenti in merito, l’area commenti è sempre a tua totale disposizione.

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

Tempo fa ho inserito un paio di personalizzazioni a bordo del Kace aziendale, per rilevare l’ID del TeamViewer installato a bordo di ogni nostro client, perché in alcuni casi l’utente non è in grado di trovare e fare doppio clic sull’icona del programma, rallentando i tempi di assistenza. Replicare la cosa è davvero banale, e ti basta inserire due nuove voci “Software” custom all’interno dell’inventario.

Kace: rilevare l'ID del proprio parco macchine

Per client a 32 bit

Naviga l’inventario Software di Kace, quindi creane uno nuovo manualmente. Inserisci un nome “parlante” (nel mio caso ho utilizzato TeamViewerID-x86), una versione (0.1 andrà più che bene) e un Publisher (inserisci il tuo nome, così da capire subito che si tratta di Custom Rules). Seleziona i Sistemi Operativi supportati, quelli a 32 bit per il momento, poi passeremo alla regola per intercettare l’ID anche sui Windows a 64 bit.

Nella Custom Inventory Rule copia e inserisci la stringa qui di seguito:

RegistryValueReturn(HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer, ClientID, NUMBER)

Essa si basa su un articolo disponibile nell’area Support di Quest, disponibile all’indirizzo support.quest.com/kb/sol111924.

Per client a 64 bit

Leggi la procedura relativa alle macchine a 32 bit, ciò che cambia è:

  • il nome da assegnare al Software Custom, che stavolta potrebbe chiamarsi TeamViewerID-x64.
  • I Sistemi Operativi compatibili, che dovranno tutti essere a 64 bit.
  • La Custom Inventory Rule, che deve leggere una diversa chiave di registro, questa:
RegistryValueReturn(HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\TeamViewer, ClientID, NUMBER)

Salva anche questo nuovo software, attendi quindi che le macchine aggiornino il loro inventario, troverai l’ID del TeamViewer (sempre aggiornato!) all’interno della scheda inventario di ciascun PC, sotto SoftwareCustom Inventory Fields:

Kace: rilevare l'ID del proprio parco macchine 2

Buon lavoro! :-)

Condividi l'articolo con i tuoi contatti:

Tempo fa ti avevo parlato di un problema riguardante un mancato rollback della versione 16.0.8229.2073 (1706) di Microsoft Office 365 ProPlus (la versione 2016), risolto scaricando e installando un diverso pacchetto, inferiore a quello difettoso. Nel frattempo i problemi sono stati risolti e altri sono sorti, facendomi scegliere una diversa strada per un certo gruppo di utenti ai quali ho tolto la possibilità di aggiornare Office dal canale un po’ più rapido di Microsoft.

Dato che si tratta di semplici modifiche alle chiavi di registro, ho optato per la scrittura di un batch che potesse automatizzare le operazioni. Te lo propongo oggi, così che possa tornarti utile in caso di necessità, da tenere quindi da parte nella solita chiave USB degli strumenti da avere sempre a portata di mano :-)

Office 365 ProPlus (2016): selezione del canale di aggiornamento

Scritto a luglio e utilizzato nel corso del tempo, lo condivido e ti spiego com’è che funziona:

Update

Aggiornamento di ottobre: ho modificato lo script correggendo una svista che tornava a disabilitare gli aggiornamenti di Office quando veniva richiesta la riattivazione. Ne ho approfittato per integrare una nuova voce di menu (la 7) che effettua la lettura del canale di aggiornamento al quale Office si appoggia (fa una lettura da registro di sistema). Ogni voce selezionata attendere ora un colpo di invio (o altro pulsante da tastiera) per tornare a mostrare il menu principale del batch.

Il codice si basa sul fatto che:

  • l’aggiornamento arriverà dai server di Microsoft e non da una location interna alla tua rete (updatepathnon viene infatti valorizzato);
  • non c’è una versione d’arrivo dichiarata (come sopra, updatetargetversion non viene valorizzato);
  • l’unica voce che cambia (in base all’esigenza) è sempre quella relativa al canale di aggiornamento (updatebranch prende il valore in base al ramo di aggiornamento scelto).

è inoltre possibile (e previsto) che una postazione possa avere la necessità di bloccare ogni futuro aggiornamento, continuando quindi a utilizzare solo e sempre quell’unica versione di Office già a bordo. Alla stessa maniera, potrai sempre tornare indietro e chiedere a Office di aggiornarsi, in un secondo momento. In entrambi i casi, la chiave di registro da andare a ritoccare è la enableautomaticupdates.

Il batch è stato testato con successo su configurazioni Windows 7 e 10, con Office 2016 (365 ProPlus) a bordo, installato chiaramente tramite C2R. Potrai scaricarlo direttamente da GitHub e avviarlo –come amministratore locale o di dominio– sul PC che ti interessa. Se l’intervento è invece da portare a termine su più PC, ti consiglio di prelevare dal codice le chiavi di registro che ti interessano, quindi darle in pasto a uno strumento di distribuzione software (come Kace).

Buon lavoro! :-)

Condividi l'articolo con i tuoi contatti:

È un problema che ho affrontato qualche tempo fa e che inizialmente mi ha dato un po’ di grattacapi, salvo poi trovare casi molti simili che mi hanno aiutato a risolvere l’anomalia. Il disco di un PC si satura e la colpa è della cartella C:\Windows\Temp, invasa da file senza estensione, dal nome che comincia sempre per cab_. Perché accade? Il problema viene generato da una installazione di alcuni aggiornamenti (da Windows Update) evidentemente non andata a buon fine, non del tutto almeno, nonostante la schermata preposta di Microsoft dica che tutto va bene.

Windows: l'invasione dei CBSPersist e dei cab_ (C:WindowsTemp)

Facendo un po’ più di attenzione, si scopre che in realtà di cartella che occupa spazio ce n’è un’altra. Teoricamente dovresti trovare anomala anche la C:\Windows\Logs\CBS, all’interno della quale dovresti trovare dei file CAB veri, e un file di log dalla dimensione decisamente robusta (CBS.log). L’anomalia parte proprio da qui. Partiamo con le opportune presentazioni (recuperate con una semplice ricerca):

CBS stands for “Component-Based Servicing” and it basically is the way components get installed and uninstalled during updates. It is the reason you see “Stage 1”, “Stage 2”, and “Stage 3” during the Service Pack 1 install (for example). “Stage 2” and “Stage 3” exists for the registry keys and files that are normally locked during regular operation.

Tutto chiaro? Un log in cui ogni aggiornamento di Microsoft va a scrivere e tiene traccia di ogni movimento. Un log destinato –per forza– a crescere, e che per un comportamento assolutamente standard va a ruotare, sospendendo la scrittura, finendo in un CAB che ne riduce (di parecchio) la dimensione, e infine ne prepara uno nuovo in cui tornare a scrivere, per poi ricominciare il giro ancora e ancora.

Se per qualsivoglia motivo questo procedimento non fila liscio, il CBS.log diventa più grande del previsto, ingestibile e –soprattutto– impossibile da mettere in un CAB nei tempi previsti. Il risultato? Cartella Temp di Windows piena di tentativi falliti di comprimere quel log, cartella CBS che si ingigantisce.

Diverse le fonti dove ho trovati informazioni in merito e persone capitate nello stesso vortice, ne ho selezionate tre che mi hanno aiutato:

Riepilogando, tutto questo può accadere in qualsiasi momento e -in base alla capacità del disco e lo spazio libero da poter sfruttare- potresti accorgertene a mesi (o forse anni) di distanza. Io ho scoperto di essere soggetto al problema solo perché un utente ha lamentato poco spazio libero e mi ha fatto scoprire l’anomalia. Le operazioni da affrontare per resettare il procedimento di scrittura e archiviazione del CBS.log è questo:

  • Fermare il servizio Windows Update.
  • Rinominare la cartella della Software Distribution (C:\Windows\SoftwareDistribution).
  • Cancellare ogni file in C:\Windows\Temp (ovviamente ignorando quelli in uso e che faranno comparire il classico errore a video di impossibilità di cancellazione, nda).
  • Riavviare il servizio di Windows Update.
  • Cancellare ora la cartella SoftwareDistribution precedentemente rinominata, non serve più, Windows Update provvederà a crearne una nuova in totale autonomia (dovrebbe già averlo fatto in fase di avvio del servizio, come da passaggio precedente).
  • Fermare il servizio Trusted Installer.
  • Cancellare ogni file in C:\Windows\Logs\CBS.
  • Riavviare il servizio Trusted Installer.
  • Forzare una ricerca aggiornamenti di Windows Update (direttamente via prompt).

Visto che questa cosa potrebbe capitare ad altri client in futuro, ho pensato di tradurla in codice batch, da dare in pasto anche al Kace di Dell (tanto per fare un esempio). Il tutto intervallando alcuni secondi di pausa prima di poter eseguire l’operazione successiva (dando così modo al client di non saltare alcun passaggio fondamentale):

sc stop wuauserv
ping 127.0.0.1 -n 7 > NUL
cd \Windows\
move SoftwareDistribution SoftwareDistribution_old
del /S C:\Windows\Temp\* /Q
FOR /D %%p IN ("C:\Windows\Temp\*.*") DO rmdir "%%p" /s /q
sc start wuauserv
rd /S /Q C:\Windows\SoftwareDistribution_old
sc stop TrustedInstaller
ping 127.0.0.1 -n 7 > NUL
del /S C:\Windows\Logs\CBS* /Q
sc start TrustedInstaller
ping 127.0.0.1 -n 5 > NUL
wuauclt.exe /detectnow

Così facendo ho risolto il problema e liberato spazio sul disco. Ho fatto queste modifiche al sistema mesi fa e il problema non si è più presentato (a me, ma anche ad altri utenti che nel frattempo ho rilevato nella nostra rete).

Facile (soprattutto se si ha un aiuto nella software distribution) fare un’analisi all’interno della rete aziendale e cercare le macchine che soffrono la stessa anomalia ma che ancora non hanno saturato il disco, basterà cercare nella cartella C:\Windows\Temp una forte presenza di cab_, così da portarsi avanti ed evitare che il problema si presenti agli occhi dell’utente.

Estote parati (cit.).

G

Update

Ho aggiunto il passaggio relativo alla cancellazione della cartella SoftwareDistribution rinominata (nella lista delle operazioni manuali da compiere), come da commento di GDB, che ringrazio per avermelo fatto notare.

Condividi l'articolo con i tuoi contatti: