Continuous upgrades for Windows 10

From the Same Mold

Creating a Meaningful Task Sequence

What does a task sequence that allows a stable upgrade process look like? In SCCM, you create an appropriately prepared task sequence, which you will want to extend using the Upgrade an operating system from an upgrade package function. Specify the default parameters and create a task sequence for the in-place upgrade: First the client is checked for RAM, CPU, and, optionally, for hard disk space; then, the in-place upgrade is triggered, and possible rollback actions are finally executed. You need to adjust the following in the task sequence:

  • End user message
  • BitLocker
  • Language pack und features on demand
  • Logging
  • Drivers
  • Adaptations

First, you should define a User Notification to inform users in the best possible way (Figure 2). If BitLocker is in use, you must disable it before upgrading, leading to a temporary vulnerability because an unencrypted Windows system is more vulnerable. Unfortunately, you have to live with this security gap.

Figure 2: Thanks to the User Notification tab, you do not leave users in the dark when upgrading Windows 10.

The customization of language packs and features on demand (e.g., speech packages for text-to-speech or tablet functions) affects customers who use multiple languages and prohibit clients from accessing Windows Update directly. After an in-place upgrade, the language packages are no longer available. If the client has Internet access, you can retrieve the data from Microsoft, otherwise you have to install the packages yourself. Of course, it is more convenient for the user if the language packages are installed at the same time. For example, use the following PowerShell script, which must be in the same directory as the language package:

$ScriptFullName = & {$MyInvocation.ScriptName}
$LangPacksPath = [string]$(Split-Path $Local:ScriptFullName)
Add-WindowsPackage -online -PackagePath $LangPacksPath-NoRestart -ea SilentlyContinue |Out-NULL

Because it is always helpful to know what went wrong and why, you should copy the logfiles in Listing 1 with the appropriate commands as the first action of the rollback

Listing 1

Logfiles to Copy

cmd /c xcopy /Y /C C:\Windows\Temp\WindowsSetupCompatScan.Log \\Server\Share \Win10_Inplace_Upgrade\%computername%\
cmd /c xcopy /C /Y C:\$WINDOWS.~BT\Sources\Panther\*.log \\Server\Share \Win10_Inplace_Upgrade\%computername%\
cmd /c xcopy /C /Y C:\Windows\CCM\LOGS\SMSTSLOG\*.log \\Server\ Share \Win10_Inplace_Upgrade\%computername%\
cmd /c xcopy /C /Y C:\$WINDOWS.~BT\Sources\Panther\*.xml \\Server\Share \Win10_Inplace_Upgrade\%computername%\

Any missing or new drivers can be imported using the familiar SCCM mechanisms. Finally, the task sequence is also useful for making general adjustments (e.g., removing AppX, modifying the taskbar, or adding images for the desktop background), which shows that standard servicing in SCCM is not really sufficient, because exactly these adjustments cannot be carried out as part of the upgrade.

Conclusions

The regular task of upgrading the operating system since Windows 10 now happens not only every three to five years, but approximately every six months. In this respect, a stable process is very important to avoid problems or to identify them quickly. However, many companies have not yet established such consistent processes. The SCCM task sequence acts as an important part of this provisioning process, along with faster test cycles.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs



Support Our Work

ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.

Learn More”>
	</a>

<hr>		    
			</div>
		    		</div>

		<div class=