Archives For Batch

Argomento delicato. La telemetria viene vista spesso con occhio sospetto, scambiata facilmente come invasione della privacy. Senza di lei però i programmi continuerebbero a rimanere potenzialmente instabili e pachidermici, appesantiti da codice che in alcuni casi non viene più utilizzato, o che è possibile ottimizzare in base ad architetture in continua evoluzione, che possono quindi premiare tutti gli utilizzatori nel corso del tempo, occupando loro meno risorse. La telemetria viene utilizzata da Mozilla (tanto per citare una società che ci tiene parecchio alla privacy altrui) ma è anche alla base dei prodotti principali di Microsoft, Windows e Office in primis.

Microsoft Windows and Office Banner

A calcare la mano però ci pensa proprio Microsoft, con consumi che di tanto in tanto (fortunatamente) sforano alla grande rispetto a quello che dovrebbe ricadere in qualcosa di simile alla “cortesia” (mi fai sapere come vanno i miei programmi? Ma certo, eccoti i dettagli della telemetria), andando così a impattare sul lavoro che è necessario portare a termine nei tempi richiesti. Agevolo screenshot:

Windows & Office un taglio alla Telemetria 1

Ora, appurato che anche Symantec ci mette del suo nel momento più sbagliato, non può comunque passare inosservato quel doppio processo che va a consumare poco più del 50% di CPU. Nello specifico dello screenshot si è trattato di telemetria di Office, ma anche quella di Windows non scherza. La prima citata gira tramite un paio di processi schedulati (entrambi fanno riferimento allo stesso eseguibile e una serie di parametri da riga di comando), la seconda tramite un servizio sempre attivo sulla macchina.

Il servizio si può fermare e disabilitare (così che non parta all’avvio del sistema), i due processi schedulati possono essere disabilitati (e basterà un semplice riavvio per mettere subito in atto la modifica). Se l’operazione manuale non ti alletta, ho messo mano al solito file di testo che è presto diventato un batch e poi un eseguibile (per entrambe le cose, separatamente, così rimane a te la scelta di cosa fermare e cosa no).

Trovi gli eseguibili agli indirizzi:

Entrambi i programmi devono essere eseguiti come amministratore. Ti permetteranno di modificare lo stato del tuo sistema o di tornare indietro in qualsiasi momento (ho inserito ambo le possibilità, così da ripristinare uno stato originale in qualsiasi momento). Per entrambi i batch ho cercato di rimanere quanto più generico possibile, così da provare a mantenere una piena compatibilità con i sistemi operativi più recenti, strizzando l’occhio anche al vecchio ma sempreverde Windows 7.

I test sono stati eseguiti su Windows 10 1703 (la Creators Update), ho fatto girare il tutto anche su un Windows 7 Pro Sp1, funzionante anche in questo caso. Se noti problemi nell’utilizzo, ti prego di farmelo sapere, l’area commenti è a tua totale disposizione! :-)

grazie ai contributi di:
computerstepbystep.com/base_filtering_engine_service.html
stackoverflow.com/questions/17412150/batch-regex-the-output-of-reg-query-command-to-a-variable
windowsitpro.com/windows-10/how-turn-telemetry-windows-7-8-and-windows-10
itechtics.com/disable-telemetry-data-collection-windows-10
technet.microsoft.com/en-us/library/cc766529(v=ws.11).aspx

È 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.

Uno di quei problemi che, a lanciare una ricerca nei forum di Microsoft, escono quasi più risultati di una equivalente azione mirata a conoscere le misure di una showgirl. In seguito all’aggiornamento a Office 2016 (anche se non immediato), in ufficio abbiamo iniziato a notare una quantità di richieste di login superiore al dovuto.

Ora, che ogni tanto scada l’accesso al proprio account Office 365, ci può assolutamente stare. Che questo diventi però un’abitudine a ciascuna chiusura e riapertura programma (anche a distanza di pochi secondi) non è normale.

Office 2016: prima di partire e primi passi con ...

Ho provato a fare un reset dell’installazione, ho provato a cambiare profilo, ho cercato riferimenti in merito, nulla di fatto. Nei forum Technet c’è molta confusione, troppe informazioni spesso sbagliate. Sono arrivato a qualcosa di concreto, ho trovato finalmente un articolo che riproduce l’errore e lo risolve (questo: meyermed.com/2014/02/fixing-the-error-onenote-needs-a-password-to-sync-this-notebook-click-here-to-enter-your-password) e ho risolto l’anomalia sulla mia postazione, memorizzando le credenziali di Outlook ancora una volta e lasciando che OneNote tenesse la cache dell’autenticazione nel Gestore Credenziali di Windows.

Office 365: continue richieste di login da OneNote (e non solo) 1

Per poter replicare rapidamente la soluzione su più postazioni, ho scritto qualche riga di batch così da poterla dare in pasto al Kace di Dell e lanciarla agilmente ogni volta che ne ho bisogno. Funziona su Windows 7, 8.1 e anche 10:

cmdkey.exe /list > "%TEMP%\CredMan.txt"
findstr.exe MS.Outlook* "%TEMP%\CredMan.txt" > "%TEMP%\CredMan_Tokens.txt"
findstr.exe MicrosoftOffice15_* "%TEMP%\CredMan.txt" >> "%TEMP%\CredMan_Tokens.txt"
findstr.exe MicrosoftOffice16_* "%TEMP%\CredMan.txt" >> "%TEMP%\CredMan_Tokens.txt"
FOR /F "tokens=1,2 delims= " %%G IN (%TEMP%\CredMan_Tokens.txt) DO cmdkey.exe /delete:%%H
del "%TEMP%\CredMan.txt" /s /f /q
del "%TEMP%\CredMan_Tokens.txt" /s /f /q

Traducendolo in soldoni, il batch esporta le credenziali attualmente presenti nel Gestore Credenziali di sistema, ricerca tutto ciò che riguarda Office 2013 (15), 2016 (16) e Outlook. Per ciascuna corrispondenza andrà a rimuovere quel riferimento in Windows. Al termine –ovviamente– cancellerà l’esportazione precedentemente eseguita.

Ho creato un pacchetto eseguibile del batch sopra riportato e l’ho caricato sul mio spazio Box, nel caso tu voglia scaricarlo direttamente: app.box.com/s/siespaz9aqi3vzowetsjnovnw15z5eoi.

Dopo aver eseguito la pulizia, come già detto, dovrai autenticarti nuovamente su Outlook ma anche su OneNote se fai uso di Notebooks salvati su OneDrive personale o business (non servirà farlo su Excel o Word, hai già attivato la suite Office, non serve fare altro). Salvo errori, se l’autenticazione andrà a buon fine, ricompariranno le voci relative alle credenziali Office 16 nel gestore Windows, queste possono (e devono) essere lasciate lì.

Cheers.

Dopo aver pubblicato l’articolo che spiegava come utilizzare Irfanview per ridurre le dimensioni di un set di immagini, sono stato contattato da Mike, fondatore di Bits&Coffee e sviluppatore di BatchPhoto. Dovresti aver già capito di cosa si tratta, il nome è abbastanza “parlante“, si tratta di un programma completamente dedicato alla lavorazione delle immagini, con particolare attenzione a una serie di possibili manipolazioni tutte richiamabili in un’unica sessione di lavoro. Puoi poi salvare il profilo delle tue modifiche per evitare di dover re-impostare tutto una seconda volta, quando andrai a riutilizzare il software per lavorare ulteriori batch.

Un coltellino svizzero per le grandi quantità di immagini

È un articolo di poche righe, anche perché non ne servono poi molte per descrivere BatchPhoto, è tutto racchiuso in poche schermate molto semplici da scorrere, localizzate tutto sommato bene anche in lingua nostrana. Raccontano come caricare le immagini da lavorare, scegliere i filtri da applicare (attenzione, tra i filtri applicabili troverai anche il ridimensionamento delle immagini), in che cartella salvare l’output generato (specificando anche, se lo volete, la possibilità di sovrascrivere le immagini originali), arrivando poi a un quarto e ultimo passaggio per chiudere la fase di configurazione e lanciare l’operazione finale di lavorazione vera e propria.

Facile individuare pro e contro dopo qualche utilizzo del software. Si parla di un programma a pagamento (si può provare gratuitamente, esistono poi codici di attivazione Home ed Enteprise che si differenziano per possibilità offerte, chiaramente), che permette di lavorare batch di immagini, che in una logica di funzionamento standard si è portati a pensare come pesanti, grandi, di difficile digestione già su disco fisso, figurarsi sul web, altrimenti non ci sarebbe quasi la necessità di ritoccare alcunché, se non fosse per qualcosa di piccolo, un miglioramento, un logo da applicare.

Due le funzioni su cui molti utilizzatori puntano (a dire del suo stesso sviluppatore): quella del ridimensionamento di gruppo (che poi è quella che ho messo alla prova in special modo, perché ne faccio spesso uso) e quella che permette di applicare data e ora in base alle informazioni della fotografia, dedicata a chi vuole conservare ricordi che possano riportare maggiori informazioni con una linea temporale ben definita, per scatenare quegli attacchi di nostalgia che in alcuni momenti tornano buoni per rifugiarsi al loro interno :-)

Pensa al tuo quotidiano: sei abituato a dover affrontare ogni tipo di sorgente, dallo storico e ormai abbandonato BMP al più comune PNG, passando anche dal TIFF e dal più classico JPG, se necessario. È forse questo il tallone d’Achille di BatchPhoto, causato soprattutto dal fatto che il programma tenta di caricare le anteprime delle immagini originali, rendendo molto difficile la sua sopravvivenza, come catturato in quest’immagine di seguito:

BatchPhoto: una possibile alternativa a IrfanView? 6

20 cartelle, 275 file, 830 MB su disco, alcuni di quei 275 file erano particolarmente grandi, lo ammetto, ho volutamente utilizzato un batch di immagini associate a un comunicato stampa, uno di quelli che arrivano alla casella di redazione di Fuorigio.co. Ho riprodotto più volte il problema, anche su una diversa postazione (si parla di i5 di ultima generazione con 8 GB di RAM e disco SSD, non esattamente macchine da buttare via, ecco) usando le stesse sorgenti. Un problema simile può sempre accadere, è perdonabile, ma l’ho risolto proprio con Irfanview che delle anteprime un po’ se ne frega, e carica la lista delle immagini da lavorare in un elenco testuale che non ti permetterebbe di capire a cosa stai mettendo mano neanche pregando. Poco male, l’importante è il risultato.

In conclusione

Perché allora scegliere BatchPhoto? Perché con una licenza del software si può chiedere aiuto, segnalare problemi al supporto, e nel frattempo approfittare della moltitudine di configurazioni possibili del programma, che nasce apposta per fare questo nella sua vita. IrfanView è un visualizzatore di immagini che nel tempo libero permette anche di ritoccarle, magari senza tutta la vastità di filtri o di configurazioni avanzate, ma portando a termine il lavoro in maniera spartana, efficacemente, per chi può accontentarsi.

Good job Mike, credo però che resterò a bordo del programma gratuito, solo perché al momento faccio parte della schiera di quelli che si accontentano, tengo comunque cara la licenza che mi hai voluto regalare, il tuo programma potrebbe tornarmi utile in futuro :-)

Update

Ho aggiunto un paio di riferimenti in più, riguardanti due delle funzioni più utilizzate del programma. Una piccola curiosità che a qualcuno potrebbe tornare comodo conoscere :-)

Disclaimer per un mondo più pulito
Gli articoli che appartengono al tag "Banco Prova" riportano la mia personale esperienza con prodotti generalmente forniti da chi li realizza. In alcuni casi il prodotto descritto rimane a me, in altri viene restituito. In altri casi ancora sono io ad acquistare il prodotto e decidere di pubblicare un articolo ad-hoc in seguito, solo per il piacere di farlo e condividere con voi i miei pensieri. Ogni articolo rispetta -come sempre- il mio standard: nessuna marchetta, solo il mio parere, riporto i fatti, a prescindere dal giudizio finale.

Prodotto: come detto nell'articolo, il codice per sbloccare la versione "Enterprise" mi è stato fornito dallo sviluppatore del software.

sourcecode-vbscriptSai già come funziona, di tanto in tanto apro il cassetto degli attrezzi, utilizzo uno script e poi penso che potrebbe essere interessante per qualcun altro sul web, quindi decido di condividerlo con te che sei dall’altra parte del monitor e che stai forse svolgendo un mestiere simile al mio.

Qualche tempo fa ho rimaneggiato un po’ di codice per realizzare un piccolo VBScript che fosse in grado di ritoccare la descrizione di un PC da remoto, senza che l’utente si accorga di nulla, collegandomi in maniera amministrativa grazie alla rete di dominio.

Da un’idea e realizzazione originale di Rob Dunn (il suo sito web non esiste più, nda), il codice qui di seguito mostra un popup a video che legge l’attuale descrizione di un PC (raggiunto tramite hostname o IP) e permette contestualmente di modificarla.

' PC Description Changer per Windows Xp+
' GSolone 2015 v 0.3
' Basato su script originale di Rob.Dunn (www.theitoolbox.com)
' Ultima modifica 17122015
'
' - accetta da prompt dei comandi il nome macchina (o IP) da raggiungere (es. PCDescription.vbs 127.0.0.1)
' - Windows XP e 2003 richiedono un riavvio macchina per poter mostrare poi la description corretta.
' - il servizio di remote registry deve essere attivo e occorre anche avere le permission WMI)
' - lo script tronca oltre i 48 caratteri forniti come testo della descrizione PC
'
' LO SCRIPT VA ESEGUITO COME AMMINISTRATORE MACCHINA O DI DOMINIO!

Dim strDescription, strComputer, reg, objRegistry
Dim ret, msg, ValueName 

Const HKLM = &H80000002

if WScript.Arguments.Count = 0 then
    'Richiesta IP o hostname macchina da modificare
    strComputer = InputBox("PC Description Changer (Win Xp +)" & vbCR & vbCR & "VA ESEGUITO COME ADMIN LOCALI O DI DOMINIO!" & vbCR & vbCR & "Inserisci il nome macchina o indirizzo IP da raggiungere (vuoto o clic su Annulla per uscire dallo script)" & vbCR, "PC Description Changer", "W7-TEST")
else
    'Se l'indirizzo IP / Hostname mi è stato passato da riga di comando, posso procedere direttamente
    strComputer = Wscript.Arguments(0)
end if

if strComputer = "" then wscript.quit

on error resume next

Set reg = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

if err.number <> 0 then 
  msgbox "Problemi di connessione al database WMI di " & strComputer & ".  Verifica che il PC sia acceso e che tu abbia tutti i permessi per poter effettuare l'operazione",16,"Errore di connessione a '" & strComputer & "'" 
  wscript.quit  
end if

on error goto 0 

Set objRegistry = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2").ExecQuery("Select Description FROM Win32_OperatingSystem")


For Each object In objRegistry
    strDescription = object.Description 
Next 

value = inputbox("Inserisci una nuova descrizione per '" & strComputer & "' (o fai clic su Annulla per terminare lo script):","PC Description Changer",strDescription)

If value = strDescription then wscript.quit

key = "SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
ValueName = "srvcomment"

If Len(Value) > 48 Then Value = Left(Value, 48)
ret = reg.SetStringValue(HKLM, key, ValueName, value)

if ret <> 0 then msgbox "Aggiornamento remoto fallito."

All’interno del codice c’è anche qualche rapida istruzione (in parte riproposta a video) per guidarti all’uso o a capire cosa può andare storto. Ricorda che il servizio di Remote Registry deve essere attivo sulla macchina di destinazione (e l’account che lancia lo script deve avere i permessi per amministrarla, vale quindi lanciarlo da un prompt dei comandi elevato), altrimenti si incorre in popup di errore come questo:

VBS: cambiare la descrizione di un PC da remoto

Tutti i test sono stati condotti su Windows 7, 8.1 e 10. In passato l’ho usato anche per macchine XP senza battere ciglio, spero però per te che tu non abbia più quel SO in giro ;-)

Per dubbi o chiarimenti, citofonare nell’area commenti.

Cheers.