Windows – How to invoke scanstate from the USMT for a large number of PCs

migrationpowershellusmtwindows

I've already customized all of my XML files, but I'm having trouble figuring out the logistics of how to script scanstate to run on a large (~50) number of PCs remotely. I have a list of PCs and the corresponding user profiles I want migrated in CSV format.

I suppose I could have a Powershell script run on startup that invokes scanstate running under CMD, filling in the appropriate parameters from the list. However, I'm concerned that this will either delay logon or the user will close the CMD window, which is not what I want. Any advice?

Best Answer

Try giving PSEXEC from Sysinternals a shot:
http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
I do not have any experience with USMT. Place the USMT tool and the files it requires in c:\temp\usmtSource on the machine you want to drive the process from. You could then use powershell to read the CSV, and PSEXEC to make the invocation on the remote targets.

import-csv usmt.csv | foreach {
    $target = $_.computer
    robocopy.exe c:\temp\usmtSource \\$target\c$\temp
    psexec.exe \\$target c:\temp\usmt.exe $_.arg1 $_.arg2 $_.arg3
}

This is based on the CSV having 4 columns names: computer, arg1, arg2, arg3
Adjust as necessary.