SCCM OSD Task Sequence Troubleshooting Steps by Step Ultimate Guide with SMSTS.log

Hello All, My name is Vishal Goyel, and this is my first post on this blog. I worked as a Microsoft support engineer specializing in SCCM Task Sequence and OSD for several years.

In this post, you will learn step by step description of the SCCM OSD Task Sequence.

Introduction SCCM OSD Task Sequence

The OSD is the most widely used feature of ConfigMgr (SCCM). When it comes to troubleshooting OSD-related issues, there is only one file SMSTS.log that can help us.

However, the SMSTS.log file contains a lot of redundant information. To troubleshoot OSD-related problems, learning to read SMSTS.log is very important.

Patch My PC

Following are the main output that you will get out of this ultimate guide.

  • Learn how to understand SCCM OSD Task Sequence Steps & Process
  • Learn how to read SMSTS.log effectively
  • Learn how to troubleshoot SCCM OSD Task Sequence

Basic SCCM OSD Task Sequence Structure

In this post, I will be explaining all the steps in a basic Task Sequence and how to read SMSTS.log.

WinPE & PXE Boot Stage – SCCM OSD Task Sequence

Machine boots into WinPE and download the Boot Image. Once WinPE is initialized, you can find SMSTS.log at the below location.

X:\Windows\Temp\SMSTSLOG\SMSTS.log

Adaptiva

If you check the logs, it will show the Boot Image files downloaded at the very beginning.

RAM Disk Boot Path: NET(0)\SMSIMAGES\LAB00005\BOOT.LAB00005.WIM    TSBootShell
Booted from network (PXE) TSBootShell

You can confirm from the logs if machine PXE booted or it booted using any media.

Download Variable Files

The first thing that the machine does is to Download variable files from the WDS server from RemoteInstall\SMSTemp\ folder and store it as a Variable.dat file locally on X drive under X:\SMS\Data folder.

Device has PXE booted   TSPxe
Variable Path: \SMSTemp\2017.03.16.13.41.39.0002.{F4304B8E-9855-401C-8168-D6BAF045258A}.boot.var TSPxe

NIC Card is InitializedSCCM MP Communication

Once variable files are downloaded, the NIC card is initialized on the machine, and we can see IP Address assigned to the device in the logs (shown below).

Loading Media Variables from "X:\sms\data\variables.dat"    TSPxe
Found network adapter "Intel 21140-Based PCI Fast Ethernet Adapter (Emulated)" with IP Address 192.168.1.32 TSPxe

Time Zone Update

Then the SCCM TS engine updates the Time information on the client machine.

Time zone: 480,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,    TSPxe
.
.
New time: 2017-03-04 21:11:20:246 TSPxe
Current time: 2017-03-04 21:11:20.238 TZ: Bias:-0480

Connects with SCCM MP

The Machine then connects with Management Point to download the base policies deployed to the machine.

CLibSMSMessageWinHttpTransport::Send: URL: PR2LAB.lab.in:80 GET /SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA 
Request was succesful.
New MP settings: TSPxe
         site=01P,01P, MP=http://PR2LAb.lab.in, ports: http=80,https=443 TSPxe
         certificates are received from MP. TSPxe
Unknown machine GUIDs: d1c4c682-cf2d-4245-af8d-20e9773f5f2d 0a156af7-e87d-4242-aa58-b3414486bd1c TSPxe
Downloading policy from http://PR2LAb.lab.in TSPxe
Initializing HTTP transport. TSPxe
.
.
.
Setting SMBIOS GUID = 7E25FE8F-F341-11E1-A20A-6C8447038046. TSPxe
Adding MAC Address A0:B3:CC:28:14:B7. TSPxe

Retrieving Policy Assignment from SCCM MP

List of Available SCCM OSD Task Sequence

Once NIC Card is initialized, and communication with Management Point is established, we can see a list of deployed Task Sequences on the machine as shown below.

Policy Download & Resolving Dependencies

Once we select any specific Task Sequence from the above Wizard, the machine downloads the policy and proceeds with resolving dependencies for all the content associated with the task sequence.

Downloading policy body LAB20000-PR100003-6F6BCC28. TSPxe
Preparing Policy Body Request. TSPxe
        Setting transport. TSPxe
        Setting policy location = http:///SMS_MP/.sms_pol?LAB20000-PR100003-6F6BCC28.1_00. TSPxe
Executing Policy Body Request. TSPxe
Using Authenticator for policy TSPxe
CLibSMSMessageWinHttpTransport::Send: URL: servername.fqdn.local:888 GET /SMS_MP/.sms_pol?LAB20000-PR100003-6F6BCC28.1_00 TSPxe
Parsing Policy Body.......
Source version for package......
Getting network access account......

Download SCCM OSD Task Sequence Content

Before SCCM Task Sequence execution starts, the machine resolves the dependencies, which checks for the Content-Location for each package associated with the Task Sequence.

It will proceed with SCCM Task Sequence only if it can receive at least one content location for each package.

If it cannot find any packages on the Distribution Points, it will fail to resolve the dependencies. This is mostly due to Boundary issues or package distribution issues. (Content location for one package is shown below).

Launch TSManager.EXE

Once the dependencies are resolved, it invokes TSManager.exe, which drives the entire Task Sequence.

The first thing that TSManager does if to parse all the steps in the Task Sequence. It reads through each step and checks the associated conditions with every step.

Once parsing the Task Sequence, it starts with TS execution. SCCM OSD Task Sequence Troubleshooting Steps by Step Ultimate Guide with SMSTS.log.

We can see that it is beginning the execution of the First step, which is Partition Disk 0 -BIOS.

Before it executes the step, it evaluates conditions attached with the step, if any, as shown below.

OSD Diskpart

The OSDDiskpart.exe, which is injected into the Boot Image once we update the boot image on Distribution Point, takes care of Disk Partitioning, and based on the settings in the step, it creates the disk partitions.

Apply the Operating System Image

After partitioning the disk, it proceeds with the next step, applying the Operating System image using SCCM OSD Task Sequence.

The OSDApplyOS.exe takes care of applying the OS to the Primary Partition.

Download OS WIM File

Before applying the OS, it needs to download the OS WIM file; we can see from the below screenshot that it is working on downloading the WIM file from the Distribution Point. It uses the Network Access Account(NAA) to download the file.

Wipes Primary Partition

Once the image file is downloaded to the C:\_SMSTaskSequence\Packages folder, before applying the OS, it again wipes the Primary Partition where it is designed to skip certain folders, including C:\_SMSTaskSequence where all the contents are downloaded during the imaging process.

It then copies the Boot files to the root of the drive, and BCD is written.

Additional Windows Configurations

During the process, it saves the initial windows configuration to C:\windows\panther\unattend\unaddend.XML file, which will contain all the settings and will be executed at a later point in time when the machine boot into Full OS for the first time.

Then it proceeds with Apply Windows Settings step. The OSDWinSettings.exe takes care of this process. SCCM OSD Task Sequence Troubleshooting Steps by Step Ultimate Guide with SMSTS.log.

It loads the Unattend.xml and appends it with the settings specified in the Task Sequence step for Apply Windows Settings.

Apply Network Settings

The next step that it runs is Apply Network Settings, OSDNetSettings.exe takes care of this process.

During this step as well, it appends the Unattend.XML file with the specified settings.

NOTE!: Settings specified in Apply Windows and Network settings are not “actually” applied on the machine when these steps are executed. The information is read from the Task Sequence step and written to Unattend. XML. We can find the file under the C:\Windows\Panther\Unattend folder.

Unattend.XML Injection

I am adding the sample Unattend.XML file; we can see that settings for Time Zone, Local Admin Password, Computer Name, and Domain join are written to the below file.

Windows and SCCM Client Setup

It now proceeds with the Setup Windows and Configuration Manager step. The client agent files are downloaded to the machine during this step, and Boot Manager is updated to Boot into Full OS, which we just installed at the Apply Operating System Step. OSDSetupWindows.exe drives this process.

We can see that it is downloading the Client Agent files locally to the machine.

Reboot to Come Out of WinPE

Now, the machine needs to reboot so that I can come out of WinPE and boot into the Full OS. Before the machine reboots, it creates SetupComplete.CMD file under C:\Windows\Setup\Scripts folder. If we check this file, we will see the following line:

%windir%\system32\osdsetuphook.exe /execute

The SetupComplete.CMD file is a Windows Setup file that is executed once Windows Setup completes. Due to this file, Task Sequence continues to run after the boot and booting into the Full OS.

We can see that before Rebooting into WinPE, the Setup Windows and Configuration Manager step requests for a retry.

During this reboot, Windows and Network Settings are executed from the Unattend.XML file created earlier.

Once it has applied the settings, it deletes this file as it contains the Domain Join account and Local Admin Account password in plain text.

Loading the Registry hives, applying the drivers, setup up the entire OS are done during this phase.

Conclusion SCCM OSD Task Sequence

After the reboot, once Task Sequence is resumed, it completes the Configuration Manager client and continues with further steps like Application Installation or Software Update installation, if any.

It finally moves the SMSTS.log to the C:\Windows\CCM\Logs folder. Once the installation is completed successfully, it deletes the C:\_SMSTaskSeuquence folder.

Bonus Tip

Have you upgraded to SCCM 1902 version yet? Have you started using PowerShell Scripts without package or content?

If so, here is the tip bonus tip for finding out the location where the PowerShell script must be stored in the Windows 10 client machine.

X:\Windows\Temp\SMSTSPowerShellScripts

Resources

Author

Vishal has over 7 years of experience in the IT domain, specializing in System Center Configuration Manager. He has been working on designing, implementing, and managing a large-scale ConfigMgr environment.

31 thoughts on “SCCM OSD Task Sequence Troubleshooting Steps by Step Ultimate Guide with SMSTS.log”

  1. Vishal, Your first blog rocks
    Waiting for future blog posts … you are great teacher … osd was never my strong point but this blog post from you made it easy to understand and troubleshoot osd related issues. I’m confident that I can handle osd issues better

    Reply
  2. Thanks Vishal this has helped me better understanding the whole task sequence process. Looking forward to any future postings.

    Reply
    • That is tricky, in the logs you see something like this while it is downloading the policies for the task sequence “LAB20000-PR100003-6F6BCC28” the middle one is the Task Sequence package ID. You can search with this ID and find which task sequence was selected.

      Reply
      • Hi Vishal, There is one long time pending issue. could you help me to resolve this issue.
        1. ShellExecute (‘raserver.exe’) failed. 0x80070002. in smsts.log I google it most of the site showing related to Network Access Account, we configured properly.
        2. error: 0xFFFFFFFF selecting the PS script for selection OU for location” could you please help me.

  3. Hi Vishal
    This tutorial looks awesome. However i was trying to find one section which i can describe here. Issue: i have included powershell as an optional conponent in my boot image to run powershell scripts in WinPE. However when running the SCCM TS, it fails to run script and gives error that can not find Powershell.exe at x:/windows/system32/windowspowershell/v1.0/powershell.exe. When i browse that location by pressing F8, i can go till v1.0 directory but can not see powershell.exe over there. Any idea on how to fix this issue to run powershell acript in WinPE. I have MECM 1910 running in environment.

    Reply
    • Hello Lucky, going through the logs will give some idea. I would suggest that you check with Boot Image is added to the Task Sequence properties. We need to first make sure that in the task sequence we are using boot image in which you added PowerShell component. If that is not the issue, try adding the component again and make sure you update the boot image to the DPs.

      Reply
      • Hi Vishal
        Thanks for your quick response. Yes i am using the same boot inage in which i added the conponent. And in the logs, it sasy unable to find powershell.exe in the path i mentioned before. Strange thing is that same is working fine while building a VM using same TS but failing on physical devices i.e laptop or desktop.

    • Below are the content of the VBS Script to dump the variables. Create a package with below VBS as content and add that to the SCCM task sequence.

      Set env = CreateObject(“Microsoft.SMS.TSEnvironment”)
      For each v in env.GetVariables
      WScript.Echo v & ” = ” & env(v)
      Next

      Reply
  4. Hi Vishal, There is one long time pending issue. could you help me to resolve this issue.
    1. ShellExecute (‘raserver.exe’) failed. 0x80070002. in smsts.log I google it most of the site showing related to Network Access Account, we configured properly.
    2. error: 0xFFFFFFFF selecting the PS script for selection OU for location” could you please help me.

    Reply
  5. Hi Vishal,
    Thanks a lot for this, cleared many confusion.
    Would like to know is there any specific account is being used during OSD? I am aware of one account which is found in TS during domain joining, I hope this is for domain joining only. Any other account is being used for the build? I assume the network access account which is configured in software distribution component is being used as well. Any other account?
    Please let me know.
    Thanks again.

    Reply
    • Hello Tanmay, Domain Join account and NAA are the only 2 mandatory accounts required for Task Sequence deployment. Also, make sure your Domain Join account has permissions only for domain join and isn’t domain admin account.

      Reply
  6. Thank you so much for having this. Really makes a difference for me since I am just now learning to use it in the environment.

    Reply
  7. Hi Vishal
    hope you are doing well…

    Thank you for brief explanation on OSD.

    I have some questions on your article:
    1) what is variable.dat file and what is the purpose of that file?
    2) From where machine has started in WinPE mode and downloaded boot image if NIC initialized in 3rd step.

    Reply
  8. Hi Vishal

    actually, we have created a task sequence, our moto is from same TS machine should be join to domain with all applications deployment. but if we deploy same TS, either will join domain or deploy applications only. we want both action should be happen in same TS. Please suggest.

    Reply
    • Machine should be able to join domain only then it will be able to communicate with SCCM infra and install application. If not joining domian, check NetSetup.log under C:]Windows\Debug folder. If domain join is successful and app install is failing, check SCCM logs under C:\Windows\CCM\Logs folder.

      Reply
  9. Hi great post! But what about following restarts? How it is managed to start where TS ended? I am asking this, because I am trying to improve deployment over WiFi i.e. need to initialize Wifi ASAP.

    Reply
    • Whenever any restarts happens, there is a hook that is created called OSDSetupHook, there is .CMD file under C:\Windows\Setup folder that contains command line called OSDSetupHook, that tells the machine to start with the task sequence again from the same place.

      Reply
  10. I am unable to image a windows machine (Error – Unable to launch Task sequence). As checked it is because of the time sync issue. I am trying to set the time of the machine to mountain time zone as our servers are in the same time zone, have tried most of the commands, but didn’t help.

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.