Jump to content


  • 0
anyweb

using Offline Mode in Windows PE using USMT 4 via a task sequence in SCCM 2007 SP2

Question

hi all,

 

Note: This post has been reproduced in a webcast, so if you'd like to see a video of Offline Mode in WinPE then click here

 

 

 

well this feature in USMT 4 is handy, as it allows you to do a scanstate while in Windows PE in other words, not in the OS so no problems with services running or applications running meaning that you get to backup everything you want without any locked files stopping from doing so.

 

Offline mode does however have some restrictions, read this page on Technet for details of that. To get around these restrictions and to migrate wallpaper see here, to migrate your network printers see here.

 

 

Great, but how do I do Offline Mode in Windows PE using SCCM ?

 

according to Microsoft, we can use the /offlinewindir switch in USMT 4 with scanstate.

 

/offlinewindir: "path to a windows directory"

 

 

This option specifies the offline Windows directory that the ScanState command gathers user state from. The offline directory can be Windows.old when you run the ScanState command in Windows or a Windows directory when you run the ScanState command in Windows PE. This option is incompatible with the /offline option.

 

However, implementing it isn't so straigtforward as you've probably already discovered and documentation about getting it to work within SCCM is as far as I can see pretty much non-existant,

so here courtesy of windows-noob.com is one way of doing it, feel free to show us other ways.

 

The theory behind this:-

 

As the Capture User State Step in a standard task sequence can only run in Windows, we cannot use that step to do our scanstate while in Windows PE, therefore we will use some tricks to run scanstate from WinPE.

 

To do this we create two special packages, the first package contains a batch file which calls the scanstate.exe file and the second package is the entire USMT X86 scanstate files and folders, (note: in this example we are using scanstate from the X86 folder).

 

This means that we create a separate package to the normal USMT4 package and this is only because this example is a workaround or proof of concept to prove that Offline Mode in Windows PE can be done via a Task Sequence in SCCM.

 

Update: If you would like sample code to check for and use the correct USMT architecture in offline mode then see Peters post here

 

 

Get your lab ready

 

We need a Windows XP client machine to test scanstate on and you should enable the F8 command prompt option in your boot.wim (you'll need it).

 

 

The Task Sequence

 

You can use this Task Sequence in SCCM by importing it. Please note this task sequence only has the 4 groups in it, if you want the 4 groups plus OSD then use the other Task Sequence further down.

 

Offline Mode in Windows PE using USMT 4.xml

 

The task sequence depends on three packages, the X86 bits from your USMT 4 (ie: copy everything in the X86 folder from C:\Program Files\Windows AIK\Tools\USMT folder. There are two versions, one for 32bit (X86) and one for 64bit (amd64), we are only using the X86 bits in this guide), the Batchfile

 

offline mode references.jpg

 

 

I break up my task sequence into four distinct groups, Set, Create, xcopy and Run

 

SET

 

 

In the Set group I set SystemDrive to c: (otherwise it will try and do this on the windows PE x: drive)

 

set systemdrive variable.jpg

 

Next we set the OSDStateStorePath Task Sequence Variable to %systemdrive%\USMToffline which translates to c:\USMToffline, this directory will store our migration data during scanstate operations and when the new os is being applied.

 

set osdstatestorepath.jpg

 

Finally we set the hardlink load parameters

 

set hardlink load parameters.jpg

 

 

CREATE

 

In the Create group we just create two folders, c:\USMToffline,

 

create usmt offline folder.jpg

 

and c:\USMTbits\X86

 

create usmt bits folder.jpg

 

 

the c:\USMTbits\X86 will store all our scanstate native files.

 

 

XCOPY

 

In the xcopy group we do the clever stuff, we copy the X86 USMT stuff to the newly created folder, and then we copy our batch file for later user.

 

xcopy usmtbits.jpg

 

The batch file itself has the following contents

 

 

@set USMT_WORKING_DIR=%~2%\USMTbits\x86

"%~2\USMTbits\x86\scanstate.exe" "%~1" /c /o /hardlink /efs:hardlink /nocompress /offlinewindir:c:\windows /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

 

xcopy runscanstate.jpg

 

You can download the batchfile below however you must rename it back to .bat

 

runscanstate-offlinewindir.bat.txt

 

 

RUN

 

The Run group does the actual running of the batch file and passes two variables to the file.

 

do scanstate.jpg

 

 

 

Testing Offline Mode.

 

Create an optional advertisement to a Migrate XP to W7 X86 collection for the Task Sequence and PXE boot your XP client (press F12 first....), select the Task Sequence when the wizard appears,

 

ts wizard welcome.jpg

 

at this point press F8 to bring up the command prompt, you are doing this to verify that your data is getting migrated in OFFLINE mode. So here we can see the command prompt is open.

 

cmd prompt before ts starts.jpg

 

Ok switch back to the TS and start the task sequence. You will see it starts creating the folders, copying the USMT stuff and our batch file(s) and then actually running the scanstate command.

 

copying.jpg

 

do x86 scanstate.jpg

 

Once it is completed your migrated data will now be stored in C:\USMToffline\USMT

 

browse it and verify

 

migrated data stored in usmt offline folder.jpg

 

If you want to see a working SMSTS.log file from the above test see below

 

smsts.log

 

 

Ok now what ?

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

pls find the attachment....

SMSTS.log

Apply(), HRESULT=80070091 (e:\nts_sms_fre\sms\client\osdeployment\applyos\installimage.cpp,1456) ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

Installation of image 1 in package MC100004 failed to complete..

The directory is not empty. (Error: 80070091; Source: Windows) ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

installer.install(), HRESULT=80070091 (e:\nts_sms_fre\sms\client\osdeployment\applyos\installimage.cpp,1527) ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

Closing image file \\sccmcentral.micro.com\SMSPKGC$\MC100004\install.wim ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

Entering ReleaseSource() for \\sccmcentral.micro.com\SMSPKGC$\MC100004\ ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

reference count 1 for the source \\sccmcentral.micro.com\SMSPKGC$\MC100004\ before releasing ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

Released the resolved source \\sccmcentral.micro.com\SMSPKGC$\MC100004\ ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

InstallImage( g_InstallPackageID, g_ImageIndex, targetVolume, ImageType_OS, g_ConfigPackageID, g_ConfigFileName, bOEMMedia ), HRESULT=80070091 (e:\nts_sms_fre\sms\client\osdeployment\applyos\applyos.cpp,373) ApplyOperatingSystem 7/24/2012 5:55:13 PM 268 (0x010C)

Process completed with exit code 2147942545 TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

!--------------------------------------------------------------------------------------------! TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Failed to run the action: Apply Operating System Image.

The directory is not empty. (Error: 80070091; Source: Windows) TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Sending status message . . . TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Send a task execution status message SMS_TSExecution_ActionFailError TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

MP server sccmcentral.micro.com and port 80. SSL=false. CRL=false. TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Site code: MC1 TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Client machine name: test TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Client Identity: GUID:757B4C05-4362-47E6-8E6B-B32D2A2A9781 TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Advertisement ID: MC120003 TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Package ID: MC10000D TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Sending StatusMessage TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Formatted header: TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

<Msg SchemaVersion="1.1" ReplyCompression="zlib"><ID/><SourceID>298d7826-91bc-45f7-8027-4c8626ffe218</SourceID><SourceHost/><TargetAddress>mp:[http]MP_StatusManager</TargetAddress><ReplyTo>direct:OSD</ReplyTo><Priority>3</Priority><Timeout>3600</Timeout><SentTime>2012-07-24T12:25:13Z</SentTime><Protocol>http</Protocol><Body Type="ByteRange" Offset="0" Length="4256"/><Hooks/><Payload Type="inline"/><TargetHost/><TargetEndpoint>StatusReceiver</TargetEndpoint><ReplyMode>Sync</ReplyMode><CorrelationID/></Msg>

TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

CLibSMSMessageWinHttpTransport::Send: URL: sccmcentral.micro.com:80 CCM_POST /ccm_system/request TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

The request has succeeded. 200 OK TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Set a global environment variable _SMSTSLastActionRetCode=-2147024751 TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Set a global environment variable _SMSTSLastActionSucceeded=false TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Clear local default environment TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

Share this post


Link to post
Share on other sites

  • 0

i dont see any scanstate or loadstate log files atttached above... however from the small bit of smsts.log file you posted theres the following error

 

Failed to run the action: Apply Operating System Image.

The directory is not empty. (Error: 80070091; Source: Windows) TSManager 7/24/2012 5:55:13 PM 1732 (0x06C4)

 

which means that a file (or files) are still on the hard disc (probably somewhere in the old users profile) that could not be deleted prior to applying the new os, therefore the installation failed, you'll need to examine the logs to find out what files are causing the issue.

Share this post


Link to post
Share on other sites

  • 0

Hello guys,

 

I am trying to do the XP to W7 Offline and I'm running into some issues.

 

First I am trying to go from Windows XP x86 to Windows 7 x64.

 

It goes through Set, Create, xcopy groups just fine, but fails on the Run scanstate part.

 

I have attached the Task Sequences, scanstate log and the bat file in txt form that I am using.

 

Any help would be great on this.

 

Thanks you in advanced you guys have helped me with a lot.

offlineUSMT.xml

scanstate.log

runscanstate-offlinewindirx64.txt

  • Like 1

Share this post


Link to post
Share on other sites

  • 0

There is a space between amd64 and the backslash. See in your scanstate.log: 2012-07-26 11:26:15, Info [0x000000] Startup exclusions - Adding excluded file pattern: C:\USMTbits\amd64 \* [*]

2012-07-26 11:26:15, Error [0x000000] EngineStartup caught exception: Win32Exception: c:\USMTbits\amd64 : The system cannot find the file specified. [0x00000002] class UnBCL::String *__cdecl UnBCL::Path::GetLongName(const class UnBCL::String *)[gle=0x00000002

  • Like 1

Share this post


Link to post
Share on other sites

  • 0

hi ,

 

After migration data kept in USMT offline folder but loadstate failed ... i have checked to open a folder but it shows access denied ...... and also before migration xp\windows is in c: drive but after migration win 7\windows install in d: drive ...and also i am not found scanstate.log file..

loadstate.log

smsts.log

Share this post


Link to post
Share on other sites

  • 0

Thank you Peter that got me past that part. Now it goes all the way through the Task Sequence but it fails on the restore part and doesn't give me enough time before it restarts the computer to see what the error is? I can still see the USMToffline folder on the C:\ any thoughts?

Share this post


Link to post
Share on other sites

  • 0

look for the loadstate.log file in this location, it's listed clearly in your smsts-.... log file (did you look at the contents of that log file?)

 

C:\Windows\SysWOW64\CCM\Logs\SMSTSLog\loadstate.log

 

post that loadstate.log file here and we'll help you.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.