Archives For Dell Kace

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

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.

Da quando esiste Microsoft Office, esiste anche la possibilità di rimuoverlo dalla macchina in maniera più efficace, forzata, nel caso in cui i file necessari a una disinstallazione regolare da Pannello di Controllo vengano a mancare o risultino danneggiati per qualsivoglia motivo. Sai dove mettere mano o come muoverti in caso di emergenza? No? Poco male, posso suggerirti che tool scaricare, senza la necessità di prodotti di terze parti, perché Microsoft mette già a disposizione di amministratori di sistemi e semplici utenti casalinghi script sempre aggiornati e che difficilmente falliscono anche nelle situazioni peggiori.

Disinstallazione Office 365 (2016): OffScrub16 e OffScrubc2r

Per evitare errori, Microsoft propone da tempo delle soluzioni eseguibili che, una volta avviate, lanciano autonomamente operazioni ben precise sulla macchina, consegnando poi il risultato finale a video, così che tu possa verificarlo e accertarti che tutto sia andato liscio. Quegli eseguibili in realtà, nascondono dei file VBScript molto complessi che possono essere facilmente recuperati. Ancora oggi il metodo è perfettamente funzionante e ho imparato a capire come muovermi semplicemente leggendo qualche articolo online, uno tra tanti (ben realizzato) è ancora disponibile all’indirizzo blogs.technet.microsoft.com/odsupport/2011/04/08/how-to-obtain-and-use-offscrub-to-automate-the-uninstallation-of-office-products.

Sulla base di questo, è facile crearsi una piccola cartella da tenere su chiave USB (o altrove) per recuperare al momento opportuno ciò che più ti è utile. Ho caricato ogni VBS online, così che tu possa scaricarli facilmente, li trovi (aggiornati alle release Click2Run e Office 2016 anche con abbonamento 365) all’indirizzo app.box.com/s/lufdy9nqb7ebr8j53asbn9rkdrbd9smr. Utilizzarli è semplice, puoi fare riferimento al primo blog Technet che ti ho riportato qualche riga fa, gli script permettono di lavorare su Office dalla sua versione 2003 alla più recente 2016 (come già detto).

Se sei solo curioso e non vuoi scaricare alcunché, puoi trovare una copia di OffScrub16.vbs su Gist. Sempre lì trovi anche una copia di OffScrubc2r.vbs, per la pulizia dei prodotti Click2Run (più generico, in grado di spazzare via anche le ultime versioni dei prodotti Microsoft per l’ufficio, compresi Project o Visio, tanto per dire).

Vecchia scuola

Se vuoi provare a disinstallare un prodotto in maniera regolare (o manualmente), devi sapere che Microsoft propone un documento estremamente chiaro all’indirizzo support.office.com/en-us/article/Uninstall-Office-2013-Office-2016-or-Office-365-from-a-PC-9dd49b83-264a-477a-8fcc-2fdf5dbf61d8, all’interno del quale potrai specificare il sistema operativo utilizzato (così da ottenere le istruzioni da seguire passo-passo), e in alternativa scaricare quello che viene chiamato “Easy Fix Tool” che andrà a effettuare in maniera completamente autonoma le operazioni sulla tua macchina, così da permetterti di pulire ogni file, ogni chiave di registro, preparando così il sistema a ricevere da zero una nuova installazione di Office. Ti stai chiedendo se si tratta del VBS più recente di cui ho parlato poco fa? Si, è lui, semplicemente conservato all’interno dell’eseguibile e depositato in maniera temporanea nella cartella C:\Users\administrator\AppData\Local\Temp\msdtadmin\_1AD76E40-C8F2-4381-82D3-781C693A6746_\cabpkg, a meno di diversa versione da te scaricata. Cambia poco in realtà (può variare la stringa esadecimale, il resto rimane generalmente invariato).

Se neanche il tool può nulla, ricordati che hai la possibilità di intervenire manualmente su Office 2016 o Office 2013, tanto per citare i due più recenti.

Integrazione

Manco a dirlo, gli script VBS di Microsoft sono perfetti per essere integrati all’interno di script più complessi o batch che possano richiamarli in caso di necessità. Ovviamente anche Dell Kace ne può fare uso in base a ciò che trova sul sistema. Uno script utilizzato per lavoro prevede il rilevamento delle versioni antecedenti all’ultima 2016 con conseguente pulizia eseguita lanciando il VBS adatto, per capirci:

:findoffice
set ofc2k3=No
set ofc2k7=No
set ofc2k10=No
set ofc2k13=No
set visio2k13=No
set prj2k13=No

if "%processor_architecture%" == "AMD64" GOTO AMD64
if "%PROCESSOR_ARCHITEW6432%" == "AMD64" GOTO AMD64
if "%processor_architecture%" == "x86" GOTO x86
GOTO exitcleaner

:AMD64
echo Sistema a 64 bit
if exist "%ProgramFiles%\Microsoft Office\Office11\WINWORD.exe" set ofc2k3="Si (Versione x64)"
if exist "%ProgramFiles(x86)%\Microsoft Office\Office11\WINWORD.exe" set ofc2k3="Si (Versione x86)"
if exist "%ProgramFiles%\Microsoft Office\Office12\WINWORD.exe" set ofc2k7="Si (Versione x64)"
if exist "%ProgramFiles(x86)%\Microsoft Office\Office12\WINWORD.exe" set ofc2k7="Si (Versione x86)"
if exist "%ProgramFiles%\Microsoft Office\Office14\WINWORD.exe" set ofc2k10="Si (Versione x64)"
if exist "%ProgramFiles(x86)%\Microsoft Office\Office14\WINWORD.exe" set ofc2k10="Si (Versione x86)"
if exist "%ProgramFiles%\Microsoft Office 15\root\office15\WINWORD.exe" set ofc2k13="Si (Versione O365 x64)"
if exist "%ProgramFiles(x86)%\Microsoft Office 15\root\office15\WINWORD.exe" set ofc2k13="Si (Versione O365 x86)"
if exist "%ProgramFiles%\Microsoft Office\Office15\VISIO.exe" set visio2k13="Si (Versione O365 x64)"
if exist "%ProgramFiles(x86)%\Microsoft Office 15\root\office15\WINWORD.exe" set visio2k13="Si (Versione O365 x86)"
if exist "%ProgramFiles%\Microsoft Office\Office15\WINPROJ.exe" set prj2k13="Si (Versione O365 x64)"
if exist "%ProgramFiles(x86)%\Microsoft Office 15\root\office15\WINPROJ.exe" set prj2k13="Si (Versione O365 x86)"
GOTO execute

:x86
echo Sistema a 32 bit
if exist "%ProgramFiles%\Microsoft Office\Office11\WINWORD.exe" set ofc2k3="Si (Versione x86)"
if exist "%ProgramFiles%\Microsoft Office\Office12\WINWORD.exe" set ofc2k7="Si (Versione x86)"
if exist "%ProgramFiles%\Microsoft Office\Office14\WINWORD.exe" set ofc2k10="Si (Versione x86)"
if exist "%ProgramFiles%\Microsoft Office 15\root\office15\WINWORD.exe" set ofc2k13="Si (Versione O365 x86)"
if exist "%ProgramFiles%\Microsoft Office\Office15\VISIO.exe" set visio2k13="Si (Versione O365 x86)"
if exist "%ProgramFiles%\Microsoft Office\Office15\WINPROJ.exe" set prj2k13="Si (Versione O365 x86)"
GOTO execute

:execute
cscript //nologo \\TUOSERVERKACE\cleanofc\ofc_start.vbs %ofc2k3% %ofc2k7% %ofc2k10% %ofc2k13% %visio2k13% %prj2k13%

:ofc2003
if %ofc2k3%=="Si (Versione x86)" cscript \\TUOSERVERKACE\cleanofc\OffScrub03.vbs ALL /Q /NoCancel /BYPASS 1
if %ofc2k3%=="Si (Versione x64)" cscript \\TUOSERVERKACE\cleanofc\OffScrub03.vbs ALL /Q /NoCancel /BYPASS 1
:ofc2007
if %ofc2k7%=="Si (Versione x86)" cscript \\TUOSERVERKACE\cleanofc\OffScrub07.vbs ALL /Q /NoCancel /BYPASS 1
if %ofc2k7%=="Si (Versione x64)" cscript \\TUOSERVERKACE\cleanofc\OffScrub07.vbs ALL /Q /NoCancel /BYPASS 1
:ofc2010
if %ofc2k10%=="Si (Versione x86)" cscript \\TUOSERVERKACE\cleanofc\OffScrub10.vbs ALL /Q /NoCancel /BYPASS 1
if %ofc2k10%=="Si (Versione x64)" cscript \\TUOSERVERKACE\cleanofc\OffScrub10.vbs ALL /Q /NoCancel /BYPASS 1
:ofc2013
REM Utilizzo lo stesso script per rimuovere anche Visio e Project 2013 (sempre in versione C2R 365)
if %ofc2k13%=="Si (Versione O365 x86)" cscript \\TUOSERVERKACE\cleanofc\OffScrub13.vbs ALL /Q /NoCancel /BYPASS 1
if %ofc2k13%=="Si (Versione O365 x64)" cscript \\TUOSERVERKACE\cleanofc\OffScrub13.vbs ALL /Q /NoCancel /BYPASS 1
if %visio2k13%=="Si (Versione O365 x86)" cscript \\TUOSERVERKACE\cleanofc\OffScrub13.vbs ALL /Q /NoCancel /BYPASS 1
if %visio2k13%=="Si (Versione O365 x64)" cscript \\TUOSERVERKACE\cleanofc\OffScrub13.vbs ALL /Q /NoCancel /BYPASS 1
if %prj2k13%=="Si (Versione O365 x86)" cscript \\TUOSERVERKACE\cleanofc\OffScrub13.vbs ALL /Q /NoCancel /BYPASS 1
if %prj2k13%=="Si (Versione O365 x64)" cscript \\TUOSERVERKACE\cleanofc\OffScrub13.vbs ALL /Q /NoCancel /BYPASS 1

:exitcleaner

Dove ofc_start.vbs viene utilizzato per mostrare un popup all’utente (indicando quali prodotti sono stati rilevati sulla macchina) e chiedendo se può procedere o meno con la rimozione. Se dovesse servirti, posso metterlo a disposizione, chiedilo pure nell’area commenti. Lo script poco sopra è chiaramente modificabile secondo tue esigenze, il mio è un esempio (comunque utilizzato in produzione) per farti capire come sia possibile utilizzare l’ottimo lavoro svolto da Microsoft all’interno del proprio ambiente di lavoro.

Al termine dell’operazione non è necessario effettuare il riavvio della macchina, puoi integrare un ulteriore VBS (o equivalente) per notificare li termine del lavoro.

Ho dimenticato nulla? :-)

Tray di Windows: icone sparite o invisibili? Ecco il fix!Mi sono imbattuto in un problema forse banale, ma sicuramente seccante (per me e per i miei colleghi). Contrariamente a molti produttori (come DELL, tanto per citarne uno), Lenovo conserva il nome del modello “commerciale” dei propri PC all’interno del campo “Version” anziché in quello “Name” quando si richiamano le informazioni sull’hardware di una macchina.

Provo a spiegarmi meglio, così:

Quel campo nasce per far presentare la macchina all’esterno (può essere letto da te, o magari da un tuo software di inventory, proprio come Kace), per dire al mondo “Io sono un $NomeModello“. Il fatto è che si tratta di un campo generalmente ignorato, perché contenente una matricola interna che viene dichiarata dall’azienda, e che permette a lei di capire di quale versione (di quel modello) si tratta nello specifico. Funziona un po’ alla stessa maniera di Apple o Microsoft, voi utilizzate Windows 7, per Microsoft in realtà si tratta del suo progetto Blackcomb (o Vienna). Dichiarare il nome “interno” nel campo Name, equivale a generare solo confusione per chi deve amministrare quelle macchine, perché un ThinkPad T450s comprato oggi potrebbe non essere lo stesso 450s comprato 3 mesi fa: un nuovo chip integrato, una preferenza

Il problema è aggirabile (nel caso tu abbia a che fare con modelli Lenovo) richiedendo il campo “Version“, che restituirà finalmente il giusto modello commerciale, quello che tutti conoscono e che potrà essere facilmente ricercato sul sito del produttore, per un problema o magari per un driver introvabile:

Kace: identificare il giusto modello Lenovo

Kace non legge, allo stato attuale, quel campo, o meglio (più corretto) non lo integra all’interno del box principale delle informazioni della macchina, riportando esclusivamente il campo Name, che così facendo diventa impossibile da gestire a causa degli acquisti fatti nel tempo. C’è un modo per aggirare l’ostacolo e ottenere quello che potete vedere nella figura di seguito, e riguarda le Custom Inventory Rule di Dell.

Kace:

Il documento che spiega meglio di cosa si tratta e come muoversi si trova all’indirizzo support.software.dell.com/kb/152057. Io ti posso sicuramente riassumere il tutto e dire che basterà creare un “nuovo software” che corrisponderà in realtà a un comando, il quale restituirà in ouput un risultato che potrà essere facilmente letto e memorizzato da Kace, questo:

ShellCommandTextReturn(wmic csproduct get Version | findstr /i Think)

Una volta messo in funzione, tutte le macchine Windows (ricordati di specificare che il comando dovrà funzionare su tutte le versioni dell’OS di Microsoft) inizieranno a comunicare quel campo al successivo giro di inventario, e tu potrai facilmente leggerlo tramite Kace (certo con qualche passaggio in più, ma è sempre meglio di nulla!), potrai infatti trovarlo sotto SoftwareCustom Inventory Fields$NomeDelTuoSoftware (nel mio caso “Modello Lenovo“).

Soluzione definitiva? Affatto, si tratta ovviamente di un work-around, ma è una buona base di partenza verso una soluzione integrata e proposta direttamente da DELL. Se ti va di sostenere l’inserimento di questa feature all’interno di un prossimo aggiornamento della piattaforma, vota il feedback che ho lasciato sullo UserVoice di DELL: kace.uservoice.com/forums/82699-k1000/suggestions/14126115-show-version-field-into-primary-information-box.

Buon lavoro!

Office 365 Logo IconIl passaggio a Office 2016 è importante per tutti coloro che hanno un abbonamento Office 365 e la possibilità di avere una copia della suite installata in locale. Rispetto a Office 2013 non cambia poi molto, non esteticamente almeno (escludendo la colorazione unica della barra superiore di ogni applicazione), l’eccezione c’è ma per una più alta stabilità, velocità e quella serie di novità che possono essere continuamente introdotte (correggendo eventuali problemi) da Microsoft, attraverso cicli che rispettano un po’ più gli ambienti di lavoro (era ora), così come ho avuto modo di spiegarvi in questo articolo pubblicato qualche tempo fa.

Quello che voglio affrontare oggi è un discorso che riguarda la distribuzione manuale, nel caso in cui all’utente non sia comparso a video il messaggio che gli permette di effettuare il salto verso la nuova versione del software di Redmond. Come al solito, mi baso sull’utilizzo di Dell Kace, ma è chiaro che ogni mio script può facilmente essere riadattato a un diverso ambiente o metodo di distribuzione.

Rapida analisi e svolgimento

Il caso tipo prevede un Office 2013 licenziato a nome dell’utente, che dovrà essere aggiornato a 2016. Una qualsiasi versione, sia chiaro, che poi saltare all’ultima patch è sempre semplice (e si fa in completa autonomia dal menu Account di una qualsiasi tra le applicazioni che compongono la suite). Sono partito dal presupposto che la base sia proprio Office 365 ProPlus (2013). Visio e Project, citati nel titolo, verranno in seguito, sempre in upgrade manuale se necessario, anch’essi controllati da uno script.

Prima di partire con l’upgrade vi servirà creare / appoggiarvi a una cartella che sia raggiungibile dalla rete e dai vostri client (aperta in sola lettura per tutti sarà più sufficiente, nda), all’interno della quale depositare i file di installazioni di Office 2016 sia in versione x86 che x64, scaricato tramite C2R, come spiegato in questo articolo, nel paragrafo relativo al metodo Click-to-Run. Quando ho preparato l’ambiente, la versione disponibile sui server di Microsoft era la 16.0.6568.2025, ormai abbondantemente superata nel ramo Current. Nulla cambia. La base potrà essere lei, verrà poi aggiornata in maniera automatica e notificata all’utente per l’installazione finale.

Lo script analizza il sistema, verifica una eventuale presenza di Office 2016 (facendo una query sul registro) e lancia il giusto setup in base all’architettura di sistema, questa la traduzione in soldoni:

set LogLocation=\\FILESERVER\Client_Logs
reg query HKLM\SOFTWARE\Microsoft\Office\16.0\ClickToRunStore\Packages\{9AC08E99-230B-47e8-9721-4577B7F124EA}
if %errorlevel%==1 (goto SelectOS) else (goto End)

:SelectOS
if not defined ProgramFiles(x86) goto 32bit else goto 64bit

:64bit
set DeployServer="\\$SERVERK1000\client\resources\o365\Office-x64 16.0.6568.2025"
set ConfigFile="\\$SERVERK1000\client\resources\o365\Office-x64 16.0.6568.2025\configuration.xml"
goto DeployOffice

:32bit
set DeployServer="\\$SERVERK1000\client\resources\o365\Office-x86 16.0.6568.2025"
set ConfigFile="\\$SERVERK1000\client\resources\o365\Office-x86 16.0.6568.2025\configuration.xml"
goto DeployOffice

:DeployOffice
echo %date% %time% Setup started. >> %LogLocation%\%computername%.txt
%DeployServer%\setup.exe /configure %ConfigFile%
echo %date% %time% Setup ended with error code %errorlevel%. >> %LogLocation%\%computername%.txt

:End

Ho aggiunto qualche riga di codice in più per permettere allo script di tracciare la sua attività in file di testo, utilizzando una cartella di rete che per l’occasione ho reso scrivibile agli utenti. Cosa sostituire quindi all’interno dello script?

  • \\FILESERVER\Client_Logs è la cartella dove depositare i log di cui vi ho appena parlato una riga più sopra.
  • \\$SERVERK1000 è la vostra macchina DELL Kace, o la cartella di rete dove tutti devono poter avere accesso (anche in sola lettura), ciò include ovviamente anche il resto del percorso “\client\resources\eccetera“.

Una volta lanciato lo script sulla macchina interessata, tramite Kace, si noterà l’operazione di upgrade nel Task Manager, rimanendo così invisibile agli occhi dell’utente che dovrà limitarsi a non avviare alcuna applicazione Office nel frattempo (ovviamente sarà stato preventivamente avvisato, con la speranza che poi collabori!):

Kace: (RTOFC16) Road To Office 2016 (installare Office)

L’operazione (dipende molto dalla velocità della rete e da quanto il client finale è scarico in termini di lavoro) dura all’incirca 20 minuti, al termine dei quali si potrà accedere alle nuove versioni 2016 degli applicativi Office. A questo punto sarà necessario confermare la password dell’account di posta (che verrà richiesta all’apertura di Outlook, nda) e accettare nuovamente i termini di licenza, quindi dare un semplice OK a video quando vi verrà mostrato il popup con le novità della versione installata.

Potrebbe capitarvi a video un messaggio di errore per installazione danneggiata. Facendo clic su “Ripristina ora“, il programma aperto verrà terminato dopo qualche secondo. Potrete riaprirlo immediatamente, tutto dovrebbe funzionare correttamente.

Visio & Project

Kace: Upgrade a Office 2016 (dal 2013), Visio, Project Kace: Upgrade a Office 2016 (dal 2013), Visio, Project 1Contrariamente a quanto sempre accaduto (spiegato anche da Microsoft in un documento dove viene espressamente negata la possibilità di far co-esistere sulla stessa macchina un’installazione C2R con una MSI, se si parla di prodotti Office), la società di Redmond ha finalmente ampliato le possibilità offerte da Office 365 e portato a bordo cloud anche Visio e Project. In soldoni, vi sarà finalmente possibile gestire un’installazione di più prodotti sotto licenza 365 sulla stessa macchina, installati tutti con metodo C2R, un bel respiro, meglio tardi che mai.

Anche noi (in ufficio) abbiamo scelto di far convertire le nostre vecchie licenze MSI (Professional) in paritarie (o quasi) 365 ProPlus. Così facendo è possibile toglierle e metterle direttamente dal pannello di Exchange (ECP), includendole o escludendole sul singolo utente.

Lo script viene pressoché da sé, facile intuire anche il metodo per il download dato che si tratta dello stesso identico utilizzato per Office, con una ovvia modifica al configuration.xml:

<Configuration>
  <Add OfficeClientEdition="64" Branch="Current">
    <Product ID="VisioProRetail">
      <Language ID="it-it" />
    </Product>
  </Add>
  <Updates Enabled="TRUE" Branch="Current" />
  <Display Level="None" AcceptEULA="TRUE" />
  <Property Name="AUTOACTIVATE" Value="1" />
</Configuration>

Che, tradotto, permetterà di scaricare l’ultima versione a 64 bit e in italiano del programma Visio, pronto per essere affiancato a un Office 2016 già presente a bordo macchina. Modificate il 64 della OfficeClientEdition portandolo a 32 se necessario, inserite ProjectProRetail al posto di VisioProRetail per cambiare il programma da scaricare / installare. Il risultato lo si porta a casa facilmente, basta sapere cosa si intende ottenere.

L’installazione tramite Kace è un passaggio altrettanto semplice:

set LogLocation=\\FILESERVER\Client_Logs

:SelectOS
REM Termino le applicazioni di Office lasciate aperte
taskkill /IM ONENOTE.EXE /F
taskkill /IM OUTLOOK.EXE /F
taskkill /IM MSACCESS.EXE /F
taskkill /IM MSPUB.EXE /F
taskkill /IM WINWORD.EXE /F
taskkill /IM EXCEL.EXE /F
taskkill /IM POWERPNT.EXE /F

REM Verifico il SO
if not defined ProgramFiles(x86) goto 32bit
:64bit
set DeployServer="\\$SERVERK1000\client\resources\o365\Project-x64 16.0.6741.2021"
set ConfigFile="\\$SERVERK1000\client\resources\o365\Project-x64 16.0.6741.2021\configuration.xml"
goto DeployOffice
:32bit
set DeployServer="\\$SERVERK1000\client\resources\o365\Project-x86 16.0.6741.2021"
set ConfigFile="\\$SERVERK1000\client\resources\o365\Project-x86 16.0.6741.2021\configuration.xml"

:DeployOffice
echo %date% %time% Setup started. >> %LogLocation%\%computername%_Project16.txt
%DeployServer%\setup.exe /configure %ConfigFile%
echo %date% %time% Setup ended with error code %errorlevel%. >> %LogLocation%\%computername%_Project16.txt
goto End

:End
echo %date% %time% Project16 batch terminated. >> %LogLocation%\%computername%_Project16.txt

Rispetto allo script precedente, questo si occupa anche di terminare i programmi di Office lasciati aperti, perché in caso contrario l’installazione non potrà essere portata a termine (già provato, nulla da fare, dispiace). Anche stavolta viene prodotto un piccolo file di log per tracciare quanto fatto. Restano identiche le modifiche da eseguire rispetto a quelle che vi ho riportato nel paragrafo precedente. Stupido dirlo: modificando lo script pubblicato qui sopra, potrete ovviamente installare anche Visio (utilizzando un solo batch, oppure creandone uno nuovo e separato).

In conclusione

Più facile scriverlo che realizzarlo, un po’ come succede quasi sempre. Si tratta di batch banali, che chiunque può scrivere in mille modi diversi pur arrivando allo stesso obbiettivo. Una volta ottenuto il materiale necessario, il resto è tutto in discesa. Stiamo portando a termine una migrazione sufficientemente unattended con la collaborazione dei nostri utenti, è questo lo scopo di tutto il gioco. Ogni nuovo consiglio o confronto è ben accetto, l’area commenti è a vostra disposizione (anche senza registrazione).

Riferimenti ad altri articoli

Office 365 ProPlus (2016): modifica versione installata

Office 2013, 2016, 365 ProPlus, download diretti e C2R