anyweb

How can I use the Upgrade Task Sequence in System Center Configuration Manager (current branch) ?



32 posts in this topic

anyweb    397

Introduction

At the start of this series of step by step guides you installed System Center Configuration Manager (Current Branch), then you configured discovery methods. Next you configured boundaries to get an understanding of how automatic site assignment and content location works. After that you learned how to update ConfigMgr with new features and fixes using a new ability called Updates and Servicing and you learned how to configure ConfigMgr to use Updates and Servicing in one of these two modes:

To prepare your environment for Windows 10 servicing (coming in a later guide) you learned how to setup Software Updates using an automated method (via a PowerShell script) or manually using the ConfigMgr console. Next you used a PowerShell script to prepare some device collections, then you configured client settings for your enterprise and finally you'll deployed the ConfigMgr client agent using the software updates method which is the least intensive method of deploying the Configuration Manager client agent.

 

As System Center Configuration Manager (current branch) is being delivered as a service now, version 1602 was made available (March 11th, 2016) and you used Updates and Servicing to do an in-place upgrade to that version as explained here.

 

The Upgrade Task Sequence

In this guide you will learn about the Upgrade Task Sequence which is now built-in to System Center Configuration Manager (current branch). This new type of task sequence was initially offered as a download from Microsoft for System Center 2012 R2 SP1 Configuration Manager however that version lacked certain abilities (such as installing drivers).

 

The Upgrade task sequence allows you to upgrade your Windows 7, Windows 8, Windows 8.1 computers (and even Windows 10) to the latest and greatest version of Windows 10. This is a new method of upgrading the operating system and it leaves the users files and settings intact. The System Center Configuration Manager (current branch) Upgrade Task Sequence can even handle drivers in the task sequence which is definitely a useful feature.

 

Note: In this Lab I've already upgraded the ADK version from 1507 to 1511, for details about how you can do that review Brandon's post here. In addition these boot wims are patched with KB3143760 and you can use Keith's PowerShell script to do it easily.

 

Step 1. Create some ConfigMgr folders

We need some folders created to store things that OSD requires (such as the operating system upgrade package) so let's use a PowerShell script to create them.

 

Note: This script creates several custom folders used for OSD, many are not applicable to the Upgrade Task Sequence but I'm including them as they will be used later as part of this series.

 

The script is available at the end of this post in the Downloads section. To use it simply edit any variables you deem necessary (such as domain, users and sources drive) and save your changes. Open the edited script in PowerShell ISE by starting it as Administrator and run the script by pressing on the green triangle.

 

createconfigmgrfolders.png

 

Some of the created folders are shown below.

 

folders created.png

 

Step 2. Copy the Windows 10 media

Before you get started with the upgrade task sequence you'll need a copy of Windows 10 media which you can download from MSDN or your Microsoft Volume License site. In this guide I'll use the latest version currently available and that is Windows 10 x64 version 1511. Once you've located a copy of this media copy the extracted contents of it to the following path (which was created by the PowerShell script above).

\\cm01\Sources\OSD\OS\OSUpgradePackages\Windows10x64\1511

as shown below

 

copy media to share.png

 

Step 3. Add Windows 10 as an operating system upgrade package

To add Windows 10 version 1511 as an operating system upgrade package do as follows. In the Configuration Manager console, click Software Library and expand Operating Systems then click Operating System upgrade packages. Right click on Operating System upgrade packages and choose Add Operating System upgrade package.

 

add operating system upgrade package.png

 

When the wizard appears fill in the path to the media and click on next

 

browse to the data source.png

 

fill in some details about the Windows 10 image, and include the version as you'll need to re-do this process every 6 months or so.

 

details about the image.png

 

continue through the wizard until completion.

 

Add operating system upgrade package wizard done.png

 

Note: To make the image available on the network, distribute it to your distribution points by right-clicking and choose Distribute Content.

 

distribute wim.png

 

Step 4. Optionally add software updates to the Windows 10 upgrade package

Cumulative updates are released for Windows 10 regularly, and the latest available cumulative update for Windows 10 version 1511 at the time of writing is KB3140743. To make this update available for servicing search for it in Software Updates as shown below.

 

search for latest CU.png

 

I won't go into too many details of making the update available but in a nutshell what i did was as follows:

  • Synchronize Software Updates
  • create folder structure to store update package (\\cm01\sources\updates\windows10)
  • create a Software Update Group from the matching architecture (x64) Cumulative Update above and deploy it to the SUM Windows 10 CB collection

deploy software updates wizard.png

 

While the above worked for me, all you should have to do is:

  • Synchronize Software Updates
  • Select one or more updates and download them

Once done, right click on the Windows 10 upgrade package and choose Schedule Updates

 

schedule updates.png

 

after a few moments you should see any updates you've made available and you can select the update you wish to apply or deselect any you don't want applied

 

select the software updates to apply to the image.png

 

Next, select a schedule that applies to your environment remembering that distribution of the patched wim can consume network resources so perhaps a custom schedule during off-business hours would be useful

 

select a schedule.png

 

and click next through completion.

 

schedule updates complete.png

 

At this point you can monitor the OfflineServicingMgr.log file available in <ConfigMgr Installation Path>\Logs by opening it in CMTrace to get details of the actual patching of the wim file. After some time it will check all available updates that you made available to see if they are applicable or not, each update will have an Applicability State which can be listed as any of the following:-

  • NOT_REQUIRED
  • INSTALLED
  • APPLICABLE
  • APPLICABILITY_CHECK_NOT_SUPPORTED

offline servicing log.png

 

The Schedule Updates process will then commit those changes, you should verify that all is well in the OfflineServicingMgr.log file before continuing with this guide.

 

Note: In addition to committing the changes the process then creates a backup copy of the original WIM file (with a file extension of .bak). The path to the backup file is included in the log. Below is a sample:

Original image '\\cm01\Sources\OSD\OS\OSUpgradePackages\Windows10x64\1511\sources\install.wim' is backed up at '\\cm01\Sources\OSD\OS\OSUpgradePackages\Windows10x64\1511\sources\install.wim.bak'

To verify that the Schedule Updates process was successful look for a line which states Schedule processing succeeded, this notifies you that all is done with the patching of the WIM file.

 

sheculed updates suceeded.png

 

 

Step 5. Create a task sequence to upgrade an operating system

Now we are ready to create the actual task sequence, to do so in the ConfigMgr console do as follows:

 

Click Software Library and expand Operating Systems, click Task Sequences. Right click and choose Create Task Sequence to start the Create Task Sequence Wizard. When the wizard appears select Upgrade an operating system from upgrade package from the list of available options as shown below:

 

create task sequence wizard.png

 

Give the task sequence a suitable name like Upgrade to Windows 10 x64 version 1511

 

task sequence name.png

 

On the Select an Operating system upgrade package step click on browse and select the Operating System Upgrade Package added (and patched) earlier, enter a product key if necessary for your version of Windows

 

select an operating system upgrade package.png

 

choose your software update options

 

do not install any software updates.png

 

add any applications you want installed and continue through to completion

 

ts created.png

 

Once created, right click on the task sequence and choose edit, observe the Check readiness for upgrade step

 

check readiness for upgrade.png

 

and next review the Upgrade Operating System step, note all the options it provides

 

Upgrade operating system step.png

 

If you choose the option to Perform windows setup compatability scan without starting upgrade then the task sequence will use a /Compat {IgnoreWarning | ScanOnly option with Windows setup and set a task sequence read-only variable called set a variable called _SMSTSOSUpgradeActionReturnCode with the error Windows setup error code as shown in the example below:

 

perform windows setup compatability scan without starting.png

 

This could be useful if you create a PowerShell script to parse the errors and log them somewhere for example in order to determine if a collection of computers is really ready for Windows 10, the downside is they have to go through the download of the operating system which takes time and disk space before actually running this step.

 

Step 6. Add drivers to the task sequence

Note: This post will not cover importing drivers into ConfigMgr, if you want to do that please refer to this post (step 2 and onwards) for a PowerShell script and manual methods to add drivers to ConfigMgr.

 

To add driver support in the Upgrade Task Sequence for models you intend to upgrade, do as follows:

 

In the Upgrade Operating System group add a new step called Download Package Content

 

download package content.png

 

And give it a suitable name such as Windows 10 x64 - Microsoft HyperV depending on the hardware model you intend to support,

 

download package content name added.png

 

Click on the yellow starburst and select a previously created driver package applicable to this model

 

select a package.png

 

In the Place into the following location section choose the following:

  • Custom Path = C:\Drivers
  • Save path as variable = Drivers

custom path.png

 

On the options tab select Add Condition, choose WMI Query and enter a query to look for your chosen hardware

 

enter query.png

 

To identify what the model of any computer is use Powershell with the following command

Get-WmiObject Win32_Computersystem

hardware identified.png

 

Apply the changes and repeat the above process for each and every model you intend to support

 

driver package added to the ts.png

 

Next select the Upgrade Operating System step and place a checkmark in Provide the following content to Windows Setup during Upgrade and then select Staged Content and enter the following variable

%Drivers01%

staged content.png

 

Step 7. Deploy the task sequence

 

At this point you are ready to start testing the task sequence. Right click it and choose Deploy, this task sequence must run within Windows so whatever collection you use should be created with that in mind...

 

deploy ts.png

 

for collection choose OSD Deploy

 

OSD Deploy.png

 

and for purpose choose Available (required is really only for the brave..., give users choice !)

 

available purpose.png

 

continue through the wizard until completion

 

deploy ts wizard complete.png

 

Step 8. Review it in action

 

Note: In Progress/screenshots coming shortly, please check back for updates !

 

After policy is received you'll see the following in Software Center

 

ts showing up in modern software center.png

 

click on it for more details

 

more details.png

 

and click on Install to start the Upgrade Task Sequence, notice the popup and the text contained within,

 

upgrade ts showing popup.png

 

if you are using the 'default' software center (old style) you'll see a different popup text shown below

 

old software center.png

 

Note: I've raised a UserVoice on this point to allow us to change the text in the popup or hide it and the task sequence from software center, you can review that here and vote too !

 

click on Install Operating System to start the upgrade, and off it goes....

 

upgrade ts running.png

 

Use CMTrace to monitor the deployment live, the log file you need to review is in C:\Windows\CCM\Logs\SMSTSLOG\smsts.log

 

below you can see where it uses the %Drivers01% variable

 

drivers01.png

 

here's the upgrade step...

 

smsts log.png

 

and off it goes with the actual Upgrade to Windows 10

 

upgrading windows.png

 

and after some time, it's completed !

 

windows is done.png

 

Summary

Microsoft continue to innovate, in System Center Configuration Manager Current Branch (version 1602) you can not only Upgrade your workstations to Windows 10 but you can ensure that they are patched with the latest available updates and installed with all applicable drivers.

 

Related Reading

Downloads

You can download a Microsoft Word copy of this guide here dated 2016/03/31

 

How can I use the Upgrade Task Sequence in System Center Configuration Manager (current branch).zip

 

You can download the PowerShell script used above here.

 

CreateConfigMgrFolders.zip

Share this post


Link to post
Share on other sites


anyweb    397

no it's correct, the variable 'base' is Drivers, but the download package content needs to refer to which package is in that step and there can be many (9 or so), hence the Drivers01 as it's the first package included in that step

  • Like 1

Share this post


Link to post
Share on other sites
Jaekt    0

Hi,

Great guide as always, anyweb, however I have a couple of questions:

 

1. Can the normal "Add driver package" sequence be used in coordination with a WMI query, or do you have to use the "Download Package Content" for every driver model you want to support?

2. Does this support all Language packs installed, main or not? As I recall there was a bug in vNext (SCCM as a Service beta) it could only upgrade Win 10 en-US. I remeber I had to uninstall any language packs, upgrade, then reinstall a language pack, for it to work..

3. After an upgrade, do all the default apps get reinstalled to default? F.ex. I do not want the app CandyCrush to be default for my Enterprise customers... does this get reinstalled after an upgrade?

Share this post


Link to post
Share on other sites
anyweb    397

hi there, answers below

 

1. Can the normal "Add driver package" sequence be used in coordination with a WMI query, or do you have to use the "Download Package Content" for every driver model you want to support?

 

no, you must use the new method of applying drivers as this works differently

 

2. Does this support all Language packs installed, main or not? As I recall there was a bug in vNext (SCCM as a Service beta) it could only upgrade Win 10 en-US. I remeber I had to uninstall any language packs, upgrade, then reinstall a language pack, for it to work..

 

no it does not support any language packs and will fail, I will blog about this shortly (time willing), long story short you can support one language pack as long as you have the media in the task sequence, or switch language to english and apply the lp's after the fact...

 

3. After an upgrade, do all the default apps get reinstalled to default? F.ex. I do not want the app CandyCrush to be default for my Enterprise customers... does this get reinstalled after an upgrade?

 

candycrush et al is controlled by Group Policy, see my post here to deal with it.

Share this post


Link to post
Share on other sites
severina    0

Posted this on the technet forums, but I'm getting nowhere there. Maybe someone here can help!

 

Running current branch (1602), OS upgrade task for Winx64 1511.

In task sequence, I have a task to download package content for a 6470 package (it does download fine, and I see it downloaded to c:\driver\package#)-

Custom Path: C:\driver
Save Path as Variable: driver

OS Install piece:
Provide the following driver content to Windwos Setup during upgrade:
-Staged Content: %driver01%

When looking at the task sequence it seems to set the variable to c:\driver and not c:\driver\package# where it actually stages the content to. See here:

Download package S0100219 to c:\driver\ successful OSDDownloadContent 6/1/2016 9:53:12 AM 5476 (0x1564)
Setting the custom destination variable 'driver' to 'c:\driver\' OSDDownloadContent 6/1/2016 9:53:12 AM 5476 (0x1564)
Adding driver to the list of paths that needs to be remapped on reboot (based on drive configuration). OSDDownloadContent 6/1/2016 9:53:12 AM 5476 (0x1564)
Download packages action completed OSDDownloadContent 6/1/2016 9:53:12 AM 5476 (0x1564)

Here is the end result: (It doesn't seem to actually pass the proper info, because it's passing the actual %driver01% instead of what should be the variable.

Content successfully downloaded at C:\_SMSTaskSequence\Packages\S010022C. OSDUpgradeWindows 6/1/2016 9:57:18 AM 7756 (0x1E4C)
Command line of Windows Setup upgrade: '"C:\_SMSTaskSequence\Packages\S010022C\SETUP.EXE" /auto Upgrade /quiet /noreboot /postoobe "C:\WINDOWS\SMSTSPostUpgrade\SetupComplete.cmd" /postrollback "C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd" /installdrivers "%driver01%" /DynamicUpdate Disable' OSDUpgradeWindows 6/1/2016 9:57:18 AM 7756 (0x1E4C)
Command line for extension .EXE is "%1" %* OSDUpgradeWindows 6/1/2016 9:57:18 AM 7756 (0x1E4C)
Set command line: "C:\_SMSTaskSequence\Packages\S010022C\SETUP.EXE" /auto Upgrade /quiet /noreboot /postoobe "C:\WINDOWS\SMSTSPostUpgrade\SetupComplete.cmd" /postrollback "C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd" /installdrivers "%driver01%" /DynamicUpdate Disable OSDUpgradeWindows 6/1/2016 9:57:18 AM 7756 (0x1E4C)
Executing command line: "C:\_SMSTaskSequence\Packages\S010022C\SETUP.EXE" /auto Upgrade /quiet /noreboot /postoobe "C:\WINDOWS\SMSTSPostUpgrade\SetupComplete.cmd" /postrollback "C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd" /installdrivers "%driver01%" /DynamicUpdate Disable OSDUpgradeWindows 6/1/2016 9:57:18 AM 7756 (0x1E4C)
Process completed with exit code 2149851149 OSDUpgradeWindows 6/1/2016 9:57:35 AM 7756 (0x1E4C)
Windows Setup completed with exit code 2149851149 OSDUpgradeWindows 6/1/2016 9:57:35 AM 7756 (0x1E4C)
ulExitCode == 0, HRESULT=80004005 (e:\nts_sccm_release\sms\client\osdeployment\upgradewindows\upgradewindows.cpp,168) OSDUpgradeWindows 6/1/2016 9:57:35 AM 7756 (0x1E4C)
Windows setup failed, code 2149851149 OSDUpgradeWindows 6/1/2016 9:57:35 AM 7756 (0x1E4C)
upgrade.Run(), HRESULT=80004005 (e:\nts_sccm_release\sms\client\osdeployment\upgradewindows\upgradewindows.cpp,678) OSDUpgradeWindows 6/1/2016 9:57:35 AM 7756 (0x1E4C)
Exiting with code 0x80004005 OSDUpgradeWindows 6/1/2016 9:57:35 AM 7756 (0x1E4C)
Process completed with exit code 2147500037 TSManager 6/1/2016 9:57:35 AM 6672 (0x1A10)
!--------------------------------------------------------------------------------------------! TSManager 6/1/2016 9:57:35 AM 6672 (0x1A10)
Failed to run the action: Upgrade Operating System (Laptops).
Unspecified error (Error: 80004005; Source: Windows) TSManager 6/1/2016 9:57:35 AM 6672 (0x1A10)
Set authenticator in transport TSManager 6/1/2016 9:57:36 AM 6672 (0x1A10)

Going nuts. Can't update my laptops to windows 10 because the NIC drivers apparently don't have a good windows update version of them. At a standstill with certain laptops because of this. If I remove this and let them upgrade normally they end up with me having to go in and update the nic driver, and since the NIC driver doesn't work when it boots back up, I can't even progress in the task sequence to add the package later :)

Share this post


Link to post
Share on other sites
anyweb    397

can i see a screenshot of your upgrade operating system step and the download content package step with the variable

Share this post


Link to post
Share on other sites
severina    0

can i see a screenshot of your upgrade operating system step and the download content package step with the variable

 

I'll post that later when I'm at work. Should be able to get that by later tonight. Thank you!!

 

In the old task sequence before, when I was running SCCM 2012 R2 SP1+ I was doing the XCOPY and had multiple ones for different laptops and they were working fine, but I was manually passing the information when I was runing the /installdrivers part. Just seems like this new task sequence isn't passing the variable properly or setting it properly. I was using the same packages so it doesn't seem a problem with the package itself. I also verified that it does copy the package to the right place. I'll get you as much info as I can later.

Share this post


Link to post
Share on other sites
severina    0

Images attached

 

Don't mind the small size of the package itself, it's just the nic driver - this worked fine when I was doing an xcopy and running the command to upgrade with /installdrivers so I know the package is good. (This was the Config 2012 R2 method to upgrade)

post-32196-0-54471800-1464898106_thumb.jpg

post-32196-0-83742900-1464898114_thumb.jpg

Share this post


Link to post
Share on other sites
anyweb    397

ok and is it that step, Upgrade Operating System (laptop) that's running or the next one, if the next one, what variable is set there ?

Share this post


Link to post
Share on other sites
severina    0

There is no variable set there for packages that don't need any drivers injected. That step is for desktops and they upgrade fine since I'm not passing anything.

 

I have found something interesting since I posted my original issue:

 

I added another set of drivers for another laptop. It keeps setting the location (variable) to c:\driver and not c:\driver\packageID no matter how many steps I add with the driver variable. The task sequence fails because when I pass %driver01% it doesn't see "01" because it's setting it to just c:\driver and nothing further. Maybe this has changed in 1602 vs 1511?

 

My next step is to just pass %driver% instead of %driver01% to see if this is indeed the case.

Share this post


Link to post
Share on other sites
severina    0

Scratch that. I forced a reinstall of the client and it seems to be passing correct variables. I will have to inspect to see what actually did it. I'll report back later today.

Share this post


Link to post
Share on other sites
severina    0

Strangely enough, a reinstall of the client fixed this issue. The strange part was that I wasn't seeing any other client errors other than the task sequence error, so it didn't jump out at me. Going to test on a few other models of laptop now to see if this one was just an anomaly.

Share this post


Link to post
Share on other sites
surfincow    4

Hello,

 

I saw a question regarding not being able to use the traditional (and already most likely pre-created driver packages) but I'm curious if rather than creating multuple "download package content" and then creating additional driver package "packages" would it work to simply create multiple "Upgrade Operating System" steps that use the normal (and already created) driver packages and base that step on a wmi query for the model?

 

Seems like an awful lot of work to make duplicate packages for drivers that already exist. Any idea why the normal driver package step does not work?

Share this post


Link to post
Share on other sites
anyweb    397

yes you can create multiple Upgrade Operating System steps and point to the driver package but what is the gain ? these are still driver packages, no different than before the only difference is because of the new method of installing (upgrade), a new method of installing driver packages is used (download package content),

 

either way works, but using the Apply Driver Package method (as used in other scenarios) does not. It is not 'upgrade' aware.

Share this post


Link to post
Share on other sites
surfincow    4

Ah OK, now I see part of the problem. It drops all the driver packages into the Root folder while I was expecting them to be sorted similar to how they are in the driver packages section in the console. Now that I see you can actually select the driver packages in that step. Makes more sense now :)

Share this post


Link to post
Share on other sites
sacaliabu    0

I have fallowed this tutorial to create my upgrade to the network.

I have 10 different computer models and drivers that i wanted to include in this task.

How would i achieve that ?

Create a "Download Package Content" for each computer model with the drivers and then use wmi to query the computer model and apply it ?

 

Thank you.

Share this post


Link to post
Share on other sites
anyweb    397

yep that's exactly what you need to do, one step per detected hardware.

Share this post


Link to post
Share on other sites
noahw86    0

i'm having the same issue with variable names, and driver references. my TS keeps failing right after this command is executed:

 

Executing command line: "C:\_SMSTaskSequence\Packages\XXX123AB\SETUP.EXE" /ImageIndex 1 /auto Upgrade /quiet /noreboot /postoobe "C:\WINDOWS\SMSTSPostUpgrade\SetupComplete.cmd" /postrollback "C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd" /installdrivers "C:\Drivers\XXX123AB" /DynamicUpdate Enable OSDUpgradeWindows

 

 

Some thing I noticed. So I’m sending the drivers to C:\Drivers\<package name>, but they never make it there, ever. I kept a Windows Explorer window open during the entire process this last run, and the folder never populated with anything. This is when the TS seems to be failing also.

 

Yet the SMSTS.log log says:

 

Driver package source is located at 'C:\Drivers\XXX123AB' OSDUpgradeWindows

 

And then later tries to execute:

 

Executing command line: "C:\_SMSTaskSequence\Packages\XXX00425\SETUP.EXE" /ImageIndex 1 /auto Upgrade /quiet /noreboot /postoobe "C:\WINDOWS\SMSTSPostUpgrade\SetupComplete.cmd" /postrollback "C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd" /installdrivers "C:\Drivers\XXX123AB" /DynamicUpdate Enable OSDUpgradeWindows

 

Share this post


Link to post
Share on other sites
noahw86    0

I was able to solve it by changing the "C:\Drivers" location to "C:\_SMSTaskSequence\Packages\"

 

I watched the upgrade process via the SMSTS.log and saw it was downloading the drivers and claiming it was putting them in the specified folder "C:\Drivers", but it wasn't actually populating that directory. So I went and moved it to the other location, and it worked.

Share this post


Link to post
Share on other sites
anyweb    397

clearly something else is happening then, as it's not doing what it's supposed to, can you attach the entire smsts*.log pls

Share this post


Link to post
Share on other sites

Hi anyweb,

 

I know this is a few months old post but wanted to try and see if anyone here can help. I am having the exact same issue as noahw86 where the directory is not being created during the "Download Package Content" step. I specified the directory as indicated on this tutorial but the directory does not get created and the driver content looks like it gets downloaded within the default task sequence directory. So when the "Upgrading Operating System" step runs it fails since I'm indicating the variable %Drivers01%. I attached a screenshot of my smsts.log below to show you the executing step and how the variable is not being changed.

 

Could this be a bug within 1602?

 

post-1-0-62881500-1486471510.png

Share this post


Link to post
Share on other sites
anyweb    397

can you include the smsts.log pls

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now