Archives For Technet

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.

Condividi l'articolo con i tuoi contatti:

Una raccolta di riferimenti, più che altro, forse utile per chi fuori da qui utilizza strumenti per il controllo remoto dei dispositivi aziendali come iPhone o iPad e necessita di aggiungere rapidamente configurazioni al dispositivo. Stavolta niente pappa pronta, più paio di collegamenti utili per costruire, come ho fatto io, un buono script PowerShell che ti permetta di creare un file di tipo MobileConfig da dare in pasto a iPhone o iPad (anche via console di terze parti come Cisco Meraki o AirWatch).

PowerShell: generare .Mobileconfig partendo dai PFX

Giusto per capirci un po’ meglio. Il file MobileConfig è in realtà un XML che puoi aprire con qualsiasi editor di testo (io utilizzo Notepad++ in ogni caso), e che propone una serie di informazioni in grado di istruire in un colpo solo il dispositivo di destinazione. Un collegamento a una particolare rete WiFi, un certificato utente che permette l’autenticazione su applicazioni web aziendali, ecc. Molte di queste informazioni possono rimanere identiche tra più utenti, altre invece no (come il certificato di sicurezza personale che permette l’autenticazione su una WiFi, per esempio).

Per questo motivo ho scritto un codice PowerShell che fonda insieme le informazioni e che, prendendo in pasto il file PFX generato da un server di dominio (esportazione del certificato utente e della chiave privata, protetto da password), generi autonomamente il XML con estensione MobileConfig da caricare successivamente sulle piattaforme di management dei dispositivi mobili.

Si tratta tutto sommato di comandi basilari, come un Add-Content "Utente.mobileconfig" -value $blocco -encoding UTF8 dove il $blocco è magari una parte di quelle informazioni precedentemente inserite nella variabile, che rimane sempre uguale, che può essere replicata per ciascun file MobileConfig da generare. Poi c’è il PFX, che va encodato e poi inserito in una variabile che utilizzerò in seguito, utilizzando un blocco simile a questo:

#Inietto contenuto PFX personale
certutil -encode ("$PFXDir\" + $($i.Name)) "Temp.enc"
$base64 = Get-Content "Temp.enc" 
$base64 = $base64[1..($base64.count - 1)]
Add-Content "Utente.mobileconfig" -value $base64 -encoding UTF8
#Rimuovo file ENC precedentemente creato
Remove-Item "Temp.enc"

Dove $PFXDir sarà la directory contenente i file PFX (ma va?) e Temp.enc viene generato esclusivamente per poterne catturare il contenuto (encodato in base64).

Da qui in poi si potranno aggiungere ulteriori blocchi già stabiliti e che rimarranno sempre uguali, se necessario (occhio agli UUID per certificati e impostazioni, ogni MobileConfig dovrà averne uno proprio, diverso dall’altro, basterà un’istruzione di tipo [guid]::NewGuid()), fino poi a chiudere il file, fino all’ultimo $blocco.

Ci ho messo un po’ a capire bene la logica che sta dietro la generazione automatica dei MobileConfig, ma una volta arrivato a far funzionare il tutto, è tutto diventato tutto più semplice. Partendo infatti da una cartella contenente i tuoi file PFX, potrai far svolgere il lavoro alla PowerShell semplicemente richiamando un blocco di questo tipo:

$ListPFX = Get-ChildItem $PFXDir | where { ! $_.PSIsContainer } | Select-Object Name
foreach ($i in $ListPFX) {
#Clono il nome PFX (senza estensione) per generare il MobileConfig
$dest = [System.IO.Path]::GetFileNameWithoutExtension($($i.Name))

Dove $ListPFX corrisponderà al contenuto della cartella contenente i PFX, che verrà quindi utilizzata per fare il lavoro sporco dal primo all’ultimo MobileConfig da generare. Vorrei poter pubblicare il codice sorgente del mio PS1 ma ci sono davvero troppi riferimenti aziendali, impiegherei un po’ di tempo a pulirlo e generalizzarlo, rischiando poi di confonderti maggiormente le idee ;-)

Con l’occasione ti lascio qualche collegamento alle fonti utilizzate:

Buon lavoro!

Condividi l'articolo con i tuoi contatti:

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? :-)

Condividi l'articolo con i tuoi contatti: