USMT: migrazione di profili utente Windows tra differenti domini

| |

USMT: migrazione di profili utente Windows tra differenti domini 1Attenzione: articolo ad alto tasso di tecnicismi lavorativi, nerditudine, viaggi mentali che potrebbero non interessare ai più, comunque vada perdete ogni speranza o voi che leggete.

USMT_iconSi tratta di un lavoro fatto più di un anno fa ma che ultimamente sembra essere tornato parecchio utile ancora una volta visto che alcuni degli utenti in azienda hanno subito una migrazione di dominio con la diretta conseguenza del dover migrare anche i dati di profilo sulla loro macchina cercando di perdere zero dati / configurazioni o il meno possibile durante “il salto“. Non ne avevo scritto all’epoca, forse ne avevo migrati talmente tanti che ormai facevo fatica a sopportare ancora le finestre batch del mio script ;-)

In realtà mi rendo conto che potrebbe tornare utile a qualche collega lì fuori o magari ad un utente che ha deciso di spostare i suoi dati su un differente account locale del suo Windows, quindi ve ne parlo volentieri. Tutto ciò che serve è conoscere lo strumento USMT (User State Migration Tool) di Microsoft (descritto qui) e magari una mano (tra script e spiegazioni) che vi permette di risparmiare del tempo per portare a termine l’operazione.

In sintesi

Lo User State Migration Tool (da ora semplicemente USMT per comodità) è uno strumento nativo di Windows 7 e 8 (Trasferimento dati Windows), mai integrato in Windows Xp, che può essere utilizzato anche da interfaccia grafica anche se in maniera un pelo più limitata e guidata. Il modo migliore per sfruttarlo -nello specifico caso dell’articolo- è quello via riga di comando dandogli in pasto un set di istruzioni che lo istruisca sul da farsi. Lo strumento effettua una scansione di tutto ciò che vi servirà trasportare e creerà un unico pacchetto che poi tramite un’operazione inversa permetterà di “esploderne” il contenuto nella nuova location. Nessun lavoro fatto a mano a rischio di errore umano, pensa a tutto lui, voi dovrete solo essere capaci di mettere mano ad un file XML all’interno del quale sceglierete cosa trasportare attraverso la scansione file su disco.

L’installazione di USMT

Per installare USMT basterà semplicemente scaricare uno dei pacchetti che ho caricato su app.box.com/s/7rr9w7e0ybmdsubgl3ol in base al vostro sistema operativo. La versione 4 è stata realizzata per Windows 7, troverete il pacchetto a 32 (USMT4.01_x86) e 64 bit (USMT4.01_x64) insieme alla versione 3 necessaria invece per coloro che stanno ancora utilizzando Windows Xp (InstallUSMT301_x86) e della quale però non ho sotto mano la versione a 64 bit (nell’eventualità voleste segnalarmela nei commenti provvederò a caricarla nella stessa cartella e renderla così disponibile a tutti).

L’installazione si limita al più classico degli avanti-avanti-fine, non è necessario fare altro per il momento e non è necessario neanche conoscere o modificare la cartella di installazione proposta dal setup del software.

Tutto in un XML

USMT: migrazione di profili utente Windows tra differenti domini 2

Il file XML per effettuare la scansione e il caricamento (in seguito) dei dati è fondamentale se non ci si vuole affidare ad uno standard Microsoft che trasporterà lo stretto necessario. Ho pensato di associare un file XML personale più ricco che possa andare a far compagnia a quello di default. Data la sua lunghezza non lo incollo qui di seguito ma potete trovarlo su Gist all’indirizzo gist.github.com/gioxx/cae18c552cf80e51d0ed.

In breve il file cercherà di trasportare nel file di migrazione:

  • il vostro Desktop (%CSIDL_DESKTOP%);
  • lo “shared Desktop” (o Desktop Pubblico) (%CSIDL_COMMON_DESKTOPDIRECTORY%);
  • eventuali personalizzazioni del menu di Start di Windows (%CSIDL_STARTMENU%) con la sua controparte pubblica come per il Desktop (%CSIDL_COMMON_STARTMENU%);
  • i documenti (%CSIDL_PERSONAL%) insieme alla musica (%CSIDL_MYMUSIC%), le immagini (%CSIDL_MYPICTURES%) e i video (%CSIDL_MYVIDEO%);
  • i preferiti di Internet Explorer (%CSIDL_FAVORITES%);
  • tutti i dati presenti all’interno della cartella %AppData% (%CSIDL_PROFILE%\AppData\*) così da non dover riconfigurare alcuna applicazione già installata sulla macchina. Consiglio di commentare questo blocco nell’eventualità si stia preparando una macchina completamente nuova che potrebbe non avere le stesse applicazioni a bordo, così facendo non porterete con voi dati potenzialmente inutili;
  • la cartella di Dropbox nel profilo personale, ammesso che esista (%CSIDL_PROFILE%\Dropbox\*);
  • la cartella di Google Drive nel profilo personale, ammesso che esista pure questa (%CSIDL_PROFILE%\Google Drive\*);
  • le icone di Quick Launch (%CSIDL_APPDATA%\Microsoft\Internet Explorer\Quick Launch);

È un set di informazioni in più oltre quelle standard (desktop, documenti, ecc.) che sicuramente vi farà piacere portare con voi sul nuovo profilo non costringendovi così a perdere ulteriore tempo per riconfigurare tutto.

I batch

Protagonisti anche loro della migrazione perché vi permetteranno di dimenticare la lunga stringa che serve per mettere in azione sia l’azione di scansione (ScanState) che di caricamento file in seguito (LoadState). Allo stato attuale delle cose non ho avuto tempo di crearne uno solo che possa lanciare la stringa adatta sul sistema adatto, è possibile (ci spero) che io trovi una manciata di minuti per farlo in futuro (lo caricherò qui immediatamente, ovviamente). Per il momento sarete voi che in base all’architettura e al sistema operativo dovrete lanciare quelli che serviranno a portare a termine una corretta migrazione, nulla di complicato sia chiaro, solo più “passaggi da fare a manina“.

Lo ScanState -manco a dirlo- analizzerà ciò che andrà portato via e messo nell’archivio che potrete in seguito caricare tramite il LoadState. L’operazione prevede la lettura del file XML originale previsto dal sistema (con lo stretto necessario) coadiuvato però da quello che ho realizzato io per includere più dati utili ai fini del salto alla nuova macchina o al nuovo utente di dominio:


@echo off
if "%1"=="" goto error
if not exist MigDomCustom7.xml goto error
cls
C:
echo USMT ScanState per Windows 7
echo GSolone 2013 (20130507-rev0)
echo.
echo Copio i dati di %1
if not exist %systemdrive%\mig mkdir %systemdrive%\mig
"%ProgramFiles%\USMT4.01\scanstate" %SystemDrive%\mig /ue:*\* /ui:%1 /i:"%ProgramFiles%\USMT4.01\migapp.xml" /i:MigDomCustom7.xml /o /c /r:1
goto end
:error
cls
echo.
echo Utilizzo del batch:
echo ScanState dominio1\vecchioutente
echo Verificare la presenza del file MigDomCustom7.xml all'interno di questa cartella.
echo.
:end

view raw

ScanState.bat

hosted with ❤ by GitHub

Questo qui sopra è il codice che può lavorare su un sistema Windows 7 a 32 bit. Potete trovare qui quello per sistemi a 64 bit (sempre 7) e qui quello per Windows Xp (32 bit). Occhio però perché con XP cambiano i nomi di alcune directory e per questo motivo ho dovuto creare un diverso file XML per il trasporto dati, lo potete trovare sempre su gist facendo clic qui.

Al termine dello ScanState il LoadState farà il lavoro “contrario” riportando i dati del vecchio utente sul nuovo. Ancora una volta il codice qui di seguito riporta il caso di un sistema Windows 7 a 32 bit. Trovate qui quello per sistemi a 64 bit (sempre 7) e qui quello per Windows Xp (32 bit). Per Windows Xp serve lo stesso file di migrazione custom che ho citato prima con tanto di collegamento diretto:


@echo off
if "%1"=="" goto error
if "%2"=="" goto error
if not exist MigDomCustom7.xml goto error
cls
echo USMT LoadState per Windows 7
echo GSolone 2013 (20130507-rev0)
echo.
echo Sposto i dati da %1 a %2
"%ProgramFiles%\USMT4.01\loadstate" %SystemDrive%\mig\ /mu:%1:%2 /i:"%ProgramFiles%\USMT4.01\migapp.xml" /i:MigDomCustom7.xml /c
goto end
:error
cls
echo.
echo Utilizzo del batch:
echo LoadState dominio1\vecchioutente dominio2\nuovoutente
echo Verificare la presenza del file MigDomCustom7.xml all'interno di questa cartella.
echo.
:end

view raw

LoadState.bat

hosted with ❤ by GitHub

Vi ricordo che tutto il pacchetto di script è disponibile per il download in versione sempre aggiornata su GitHub, non c’è quindi bisogno di capire come esportarli uno ad uno da gist ;-)

La migrazione step-by-step

C’è un preciso ordine per tutto, questo metodo con script annessi non fa eccezione. Il motivo principale consiste nel blocco dei file che Windows opera quando si fa il login al dominio sulla macchina. Per poter trasferire correttamente tutti i dati occorre rispettare quindi questa tabella di marcia, così da evitare possibili danni collaterali.

1- Un riavvio pulito

Riavviare (o avviare da spenta) la macchina e collegarsi con un amministratore di dominio (meglio del locale, qualche cartella potrebbe avere permessi più restrittivi). A questo punto si partirà con l’operazione di scansione e salvataggio file dell’utente interessato. Nel caso dello ScanState basterà passargli l’utente dal quale effettuare la lettura. Occorrerà aprire un prompt dei comandi e lanciare semplicemente uno “ScanState dominio\utente“:

ScanState-Windows7_completo

L’operazione di lettura e inserimento dati in archivio potrebbe durare parecchio, tutto dipende da quanti GB di spazio occupa il vostro profilo sul disco locale. Per scoprirlo basterà andare in C:\Users\VOSTROUTENTE e con il tasto destro fare clic sulla cartella, quindi Proprietà. Se i GB cominciano ad andare sempre più in alto toccando quote importanti (pari o superiori ai 10, per capirci *1) propenderei per un taglia-incolla dei dati più corposi (generalmente la libreria musicale e le fotografie, per non parlare dei video) in una cartella temporanea nel disco C: (C:\temp andrà benissimo) per poi –una volta fatto il LoadState atto a caricare i dati precedentemente salvati– riportarli dentro manualmente e di certo più rapidamente rispetto al processo automatizzato di Microsoft, fidatevi, la vostra già labile salute mentale vi ringrazierà.

Ricordate che di default il mio batch scriverà i dati (archivio delle impostazioni e dei vostri file) all’interno di C:\Mig, dove troverete anche un log delle operazioni.

2- La “Terra di Mezzo”: cambio del dominio

Al termine della copia dati si potrà portare il PC nel nuovo dominio (ed eventualmente rinominarla se necessario) e riavviarlo immediatamente per applicare la modifica. Alla prossima richiesta di accesso inserite username e password del nuovo dominio, questo permetterà di creare la cartella di profilo nella quale in seguito andranno copiati i dati, una volta dentro riavviare ancora una volta la macchina. Questo servirà a sbloccare eventuali cartelle bloccate da sistema e permettere quindi una scrittura dati priva di errori.

3- Ricaricare i dati

Ora che la macchina si trova nel nuovo dominio e avete fatto creare la cartella del vostro nuovo profilo si potrà procedere con il caricamento dei dati precedentemente salvati. Fate login con l’amministratore di dominio (del nuovo, manco a dirlo) e -sempre da prompt dei comandi- bisognerà lanciare il LoadState adatto al sistema utilizzato, stavolta dandogli in pasto il vecchio utente di dominio seguito dal nuovo, quindi “LoadState vecchiodominio\utente nuovodominio\utente“, a meno di errori lo script verificherà la presenza del pacchetto dati di migrazione all’interno di C:\mig e partirà con il processo di restore:

LoadState

Come per lo ScanState anche il LoadState necessita dei suoi tempi. Al termine della scrittura dati vi verrà presentato un return code 0 se tutto è andato per il verso giusto, al contrario presenterà a video un errore generalmente accompagnato da un codice che potrete ricercare su Google per trovare il giusto documento di riferimento Microsoft. Per esperienza personale è comune incorrere in alcuni ostacoli che sono poi abbastanza semplici da superare. All’interno dei file XML di migrazione ho incluso alcuni casi e le fonti dalle quali ho preso spunto per portare a termine il tutto (vi basterà aprire quei file con un editor di testo qualsiasi).

In ogni caso sarà necessario effettuare una disconnessione dall’utente attuale per passare su quello di destinazione così da controllare che tutto sia filato liscio. Personalmente vi consiglio un riavvio così da non sbagliare. Noterete che -con una certa soddisfazione- file e impostazioni sono al loro posto, persino l’ordine delle icone sul Desktop sarà lo stesso rispetto a ciò che avete lasciato l’ultima volta sul vecchio account di dominio :-)

Prima di saltellare dalla gioia date comunque un’occhiata all’ultimo capitolo di questo articolo (Note, problemi conosciuti e work-around) per saperne di più sulle tracce che lascia il metodo. Se invece avete riscontrato problemi apparentemente irrisolvibili vi consiglio la lettura del prossimo paragrafo subito qui di seguito.

3/a- Ricaricare i dati tramite interfaccia grafica

Sembra quasi un punto messo lì come fosse un interno di un condominio ed in effetti lo scopo è farvi capire che si può arrivare allo stesso traguardo anche in altra maniera. Windows 7 è il primo SO di Microsoft ad includere infatti una funzionalità nativa per la migrazione dei dati da un diverso PC. Si chiama molto banalmente “Trasferimento dati Windows” ed è possibile avviarlo tramite una banale ricerca nel campo vuoto dello Start. Se avviato senza alcun parametro questo chiederà cosa trasferire e da quale sorgente:

Trasferimento dati Windows

Ciò che forse ignorate è che tramite lo ScanState lanciato un paio di paragrafi fa il batch ha creato un archivio perfettamente compatibile con “Trasferimento dati Windows”, il quale ovviamente è in grado di ripristinarlo saltando a piè pari il LoadState da prompt dei comandi. Questo può tornare molto utile anche quando il LoadState restituisce a video errori non facilmente interpretabili e che magari non si riescono ad aggirare. Basterà fare doppio clic sul “bombolone” di dati che troverete sotto C:\Mig\USMT per lanciare il software e decidere così da che account trasferire i dati (quello per il quale avete lanciato lo ScanState, ovviamente) e su che destinazione (l’utente sul nuovo dominio, altrettanto ovviamente), il tutto sempre rigorosamente come amministratori di dominio o locali della macchina così da non far bloccare particolari file utente che diversamente diventerebbero non sovrascrivibili.

trasferimento-manuale-usmt

Note, problemi conosciuti e work-around

Poca roba eh, niente di bloccante, può tornare però utile sapere certe cose, ho messo qua e la dei riferimenti nell’articolo e ve li spiego meglio in questo paragrafo dedicato:

  • *1: per verifica in maniera più intuitiva e approfondita quali cartelle occupano più spazio nel vostro profilo potete scaricare e utilizzare TreeSize Free, ottima utility che non necessita di installazione. Dategli in pasto una cartella precisa del disco (o l’intero disco, se lo ritenete opportuno) e vi dirà in una manciata di minuti “chi occupa cosa” così da permettervi di intervenire in maniera mirata.

passiamo ora alle piccole pecche che il metodo appena spiegato lascia in giro per il disco:

  • Il vostro sfondo potrebbe non essere quello che avevate lasciato l’ultima volta: tipicamente sostituito da un monocolore decisamente più triste e banale, lo sfondo di Windows potrebbe non essere quello che avete cercato di trasferire. Il perché? Programmi di terze parti, browser e qualsiasi altro software in grado di modificare l’aspetto della vostra scrivania potrebbe aver salvato il file immagine di sfondo in una cartella non contemplata dallo script di trasferimento. Così facendo ovviamente Windows non troverà quel file immagine e non sarà in grado di ridarvi visibilità dell’immagine che avevate scelto come contorno delle icone lasciate sparse sulla schermata principale di Windows. Poco male, basterà ricerca quell’immagine e metterla nuovamente come sfondo del Desktop.
  • Ci vedo doppio! Le raccolte sono duplicate: non siete ubriachi e non avete ancora le allucinazioni. Aprendo l’Esplora Risorse di Windows noterete che le raccolte del sistema (Documenti, Immagini, Video e Musica) saranno accompagnate da altrettante icone con lo stesso nome e il classico “(2)” a fianco. Le raccolte vengono raddoppiate perché create immediatamente al login utente (fatto per la prima volta prima del LoadState). Poco male, vi basterà selezionare le “(2)” ed eliminarle, non perderete alcun dato.
  • Il mio disco si è rimpicciolito, mi sta stretto!: non è proprio così. Dovete sempre ricordare che in questo momento avete pressoché raddoppiato l’occupazione del vostro profilo sullo stesso disco. Il fatto che quel profilo sia su due domini differenti vuol dire che corrisponde anche a due SID differenti (Security IDentifier di Microsoft, ndr). Quando siete sicuri di avere tutto al proprio posto lanciate Start / Esegui / sysdm.cpl e dalla tab Avanzate accedete a Profili utente e –una volta caricata la finestra (portate pazienza)– selezionate e cancellate VECCHIODOMINIO\vostroutente che -quasi certamente- occuperà molto spazio (potete notarlo voi stessi, c’è la colonna di occupazione su disco). L’operazione potrebbe durare diversi minuti e potrebbe essere necessario (in caso di errore per Directory non vuota) andare a cancellare manualmente la cartella in C:\Users. Questo vi permetterà di recuperare lo spazio perso in corso di migrazione dati.

Credo di aver riportato tutto (ma proprio tutto) in questo corposissimo articolo. Potrei quasi scommettere che nessuno è stato capace di arrivare fino in fondo ma sono altrettanto certo che là fuori qualcuno mi ringrazierà, soprattutto se dovesse trovarsi nella stessa situazione / necessità come è stato per me lo scorso anno (e ancora anche questo 2014 per alcune macchine).

Cheers.

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

5 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments