Known Issue: Migrating from Windows XP to Windows 7 with USMT when used with ConfigMgr 2007 SP2 OS Deployment may not migrate all settings

Known Issue: Migrating from Windows XP to Windows 7 with USMT when used with ConfigMgr 2007 SP2 OS Deployment may not migrate all settings

  • Comments 4
  • Likes

[In today's post Levi Stevens discusses an issue with USMT and Config Manager 2007 SP2]

Problem Description

When upgrading or reinstalling Windows XP to Windows 7 using USMT 4.0 to migrate system and user state, settings like Wallpaper and Network Printer mappings are not migrated.

Running scanstate.exe from a folder other than the USMT - x86 - folder (the default for the Task Sequence) prevents scanstate.exe from finding the DLManifests folder to include system components like wallpaper and folder settings. These settings will not be migrated.  USMT 4.0 must be run from a local folder containing the DLManifests folder.

The User State Migration Tool (USMT) version 4.0 released with the Windows Automated Installation Kit (WAIK) version 2.0 and is a prerequisite for using OS Deployment with ConfigMgr 2007 SP2.

Symptoms

After migrating user state the wall paper or folder settings do not migrate.  If you have enabled verbose logging (/v:5) you may see the following entry in ScanState.log:

2009-09-14 15:41:19, Info [0x000000] Downlevel Manifests folder is not present. System component settings will not be gathered.

Workaround

Copy the USMT binaries to local and use "Run Command Line" task sequence step to run scanstate.exe from the USMT\x86 directory (set the Starting In from "Run Command Line" to USMT\x86 folder).  You will need two steps, one to copy the USTM folder to the local drive, and one to run USMT capture state.

Example Task Sequence

Save the below example as TSExample.xml, then import this into ConfigMgr.  You will need to edit the task sequence to set the reference package that contains the RunScanState.bat example workaround script.

<?xml version="1.0"?>
<SmsTaskSequencePackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <BootImageID />
  <Category />
  <DependentProgram />
  <Description />
  <Duration>360</Duration>
  <Name>WorkAround</Name>
  <ProgramFlags>152084496</ProgramFlags>
  <SequenceData>
    <sequence version="3.00">
      <referenceList>
        <reference package="SMS00001" />
      </referenceList>
      <step type="SMS_TaskSequence_RunCommandLineAction" name="Run Command Line" description="" runIn="WinPEandFullOS" successCodeList="0 3010">
        <action>smsswd.exe /run: cmd.exe /c md %systemdrive%\usmtsafe</action>
        <defaultVarList>
          <variable name="CommandLine" property="CommandLine" hidden="true">cmd.exe /c md %systemdrive%\usmtsafe</variable>
          <variable name="SMSTSDisableWow64Redirection" property="DisableWow64Redirection">true</variable>
          <variable name="_SMSTSRunCommandLineAsUser" property="RunAsUser">false</variable>
          <variable name="SuccessCodes" property="SuccessCodes" hidden="true">0 3010</variable>
        </defaultVarList>
      </step>
      <step type="SMS_TaskSequence_RunCommandLineAction" name="Run Command Line" description="" runIn="WinPEandFullOS" successCodeList="0 3010">
        <action>smsswd.exe /run: cmd.exe /c md %systemdrive%\USMTbits</action>
        <defaultVarList>
          <variable name="CommandLine" property="CommandLine" hidden="true">cmd.exe /c md %systemdrive%\USMTbits</variable>
          <variable name="SMSTSDisableWow64Redirection" property="DisableWow64Redirection">false</variable>
          <variable name="_SMSTSRunCommandLineAsUser" property="RunAsUser">false</variable>
          <variable name="SuccessCodes" property="SuccessCodes" hidden="true">0 3010</variable>
        </defaultVarList>
      </step>
      <step type="SMS_TaskSequence_SetVariableAction" name="Set Task Sequence Variable" description="" runIn="WinPEandFullOS" successCodeList="0">
        <action>tsenv.exe "OSDStateStorePath=%systemdrive%\usmtsafe"</action>
        <defaultVarList>
          <variable name="VariableName" property="VariableName" hidden="true">OSDStateStorePath</variable>
          <variable name="VariableValue" property="VariableValue" hidden="true">%systemdrive%\usmtsafe</variable>
        </defaultVarList>
      </step>
      <step type="SMS_TaskSequence_RunCommandLineAction" name="Run Command Line" description="" runIn="WinPEandFullOS" successCodeList="0 3010">
        <action>smsswd.exe /run:SMS00001 xcopy * %systemdrive%\USMTbits /herciy</action>
        <defaultVarList>
          <variable name="CommandLine" property="CommandLine" hidden="true">xcopy * %systemdrive%\USMTbits /herciy</variable>
          <variable name="SMSTSDisableWow64Redirection" property="DisableWow64Redirection">true</variable>
          <variable name="PackageID" property="PackageID" hidden="true">7S000003</variable>
          <variable name="_SMSTSRunCommandLineAsUser" property="RunAsUser">false</variable>
          <variable name="SuccessCodes" property="SuccessCodes" hidden="true">0 3010</variable>
        </defaultVarList>
      </step>
      <step type="SMS_TaskSequence_RunCommandLineAction" name="Run Command Line" description="" runIn="WinPEandFullOS" successCodeList="0 3010">
        <action>smsswd.exe /run: cmd /c runscanstate.bat %OSDStateStorePath% %systemdrive%</action>
        <defaultVarList>
          <variable name="CommandLine" property="CommandLine" hidden="true">cmd /c runscanstate.bat %OSDStateStorePath% %systemdrive%</variable>
          <variable name="SMSTSDisableWow64Redirection" property="DisableWow64Redirection">false</variable>
          <variable name="_SMSTSRunCommandLineAsUser" property="RunAsUser">false</variable>
          <variable name="SuccessCodes" property="SuccessCodes" hidden="true">0 3010</variable>
          <variable name="WorkingDirectory" property="WorkingDirectory">%systemdrive%\USMTbits\x86</variable>
        </defaultVarList>
      </step>
    </sequence>
  </SequenceData>
  <SourceDate>2009-10-21T19:33:43</SourceDate>
  <SupportedOperatingSystems />
  <IconSize>0</IconSize>
</SmsTaskSequencePackage>

RunScanState.Bat

@set USMT_WORKING_DIR=%~2%\USMTbits\x86
"%~2\USMTbits\x86\scanstate.exe" "%~1" /o /localonly /efs:copyraw /all /v:5 
/l:%~2\windows\TEMP\SMSTSLog\scanstate.log 
/progress:%~2\windows\TEMP\SMSTSLog\scanstateprogress.log 
/i:%~2\USMTbits\x86\miguser.xml /i:%~2\USMTbits\x86\migapp.xml

 

-- Levi Stevens

This posting is provided "AS IS" with no warranties and confers no rights.

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • Are the standard built-in tasks going to be updated as well?

  • Where to you put the .bat in the task sequence?

  • I am not sure I understand where to implement these steps into the standard task sequence. can you tell me where that would fit in please

  • Please refer to this knowledge base article : support.microsoft.com/.../2018593