Das USMT (User State Migration Tool) ist ein von Microsoft erstelltes Kommandozeilenprogramm, um Benutzerdateien und Einstellungen auf einem anderen Computer oder Benutzer zu migrieren.
USMT erlaubt das Migrieren der Benutzer zwischen Geräten, Domänen und Lokale Benutzer.
Normalerweise wird USMT von Netzwerkadministratoren für's Deployment verwendet (z.B. mit SCCM), jedoch kann es auch als seperates Tool zum Sichern und Wiederherstellen genutzt werden.
USMT ist ein Bestandteil vom Windows Assessment and Deployment Kit (ADK) und kann hier heruntergeladen werden. Nach der Installation findet man USMT im Verzeichnis: C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\User State Migration Tool\amd64
Das User State Migration Tool besteht aus zwei Anwendungen: ScanState.exe
und LoadState.exe
.
Mit ScanState.exe
werden alle Benutzerdaten und Einstellungen eines Benutzers gescannt und in einer Repository gesammelt.
Bei LoadState.exe
werden hingegen die Benutzerdaten und Einstellungen auf dem Zielgerät-/Benutzer wiederhergestellt.
Damit USMT weiß, welche Benutzer migriert werden sollen, muss zunächst die Benutzer-SID herausgefunden werden.
Die Benutzer-SID kann durch viele verschiedene Methoden herausgefunden werden. Hier erkläre ich die Methoden via PowerShell, WMIC und Registry.
In der Regel sieht eine SID wie folgt aus:
S-1-5-21-1234567890-1234567890-1234567890-1234
Get-ADUser -Filter * | Select-Object Name,SID,DistinguishedName
wmic useraccount get name,sid
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
.ProfileImagePath
kann man das jeweilige Profil erkennen.Vor dem Sichern müssen zunächst folge Dinge bereitgestellt werden:
Die reine Syntax von ScanState.exe
lautet wie folgt:
ScanState.exe [StorePath] [/apps] [/ppkg:FileName] [/i:[Path\]FileName] [/o] [/v:VerbosityLevel] [/nocompress] [/localonly] [/encrypt /key:KeyString|/keyfile:[Path\]FileName] [/l:[Path\]FileName] [/progress:[Path\]FileName] [/r:TimesToRetry] [/w:SecondsBeforeRetry] [/c] [/p] [/all] [/ui:[DomainName|ComputerName\]UserName] [/ue:[DomainName|ComputerName\]UserName] [/uel:NumberOfDays|YYYY/MM/DD|0] [/efs:abort|skip|decryptcopy|copyraw] [/genconfig:[Path\]FileName[/config:[Path\]FileName] [/?|help]
Die Syntax, die ich zur Migration verwende, sieht wie folgt aus:
ScanState.exe <Pfad\zur\Repository> /ue:*\* /ui:<Benutzer-SID> /l:scanstate.log /config:Config_AppsAndSettings.xml /i:MigUser.xml /c /r:3 /o
Die reine Syntax von LoadState.exe
lautet wie folgt:
LoadState.exe StorePath [/i:[Path\]FileName] [/v:VerbosityLevel] [/nocompress] [/decrypt /key:KeyString|/keyfile:[Path\]FileName] [/l:[Path\]FileName] [/progress:[Path\]FileName] [/r:TimesToRetry] [/w:SecondsToWait] [/c] [/all] [/ui:[DomainName|ComputerName\]UserName] [/ue:[[DomainName|ComputerName\]UserName] [/uel:NumberOfDays|YYYY/MM/DD|0] [/md:OldDomain:NewDomain] [/mu:OldDomain\OldUserName:[NewDomain\]NewUserName] [/lac:[Password]] [/lae] [/config:[Path\]FileName] [/?|help]
Die Syntax, die ich zur Migration verwende, sieht wie folgt aus:
LoadState.exe <Pfad\zur\Repository> /ue:*\* /ui:<Benutzer-SID> /l:loadstate.log /config:Config_AppsAndSettings.xml /i:MigUser.xml /c /r:3 /lac /lae /mu:<Quell-Domäne\Quell-Benutzer>:<Ziel-Domäne\Ziel-Benutzer>
Die Wiederherstellung der Benutzer ist nicht auf das Quell-System beschrängt. In diesem Beispiel wurde ein Benutzer, dass ursprünglich unter Windows 11 lief, in ein Windows 7-System migriert.