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?


Try giving PSEXEC from Sysinternals a shot:
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.

  • Not a bad idea. I wonder if this is the "official" way to do it. – Bigbio2002 Oct 28 '14 at 13:28
  • I ended up doing something like this (except more elaborate), with PowerShell > cmd > psexec > scanstate. It's quite robust, actually. – Bigbio2002 Nov 4 '14 at 17:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.