Author Nawaz Kazi
Whenever we upgrade windows 10 using SCCM windows 10 Servicing, the process responsible for the upgrade runs with below Normal Priority.
As a result, the upgrade has seen to be very slow observed in many deployments.
The only way I see is by prioritizing this process setuphost.exe by increasing the priority parameter in SetupConfig.ini
Before jumping on how can we automate the whole process, let’s know more about the Setupconfig.ini file
What is a setupconfig file?
Setupconfig is a configuration file that is used to pass a set of flags or parameters to Windows setup.exe. Use this file as an alternative to passing parameters to Windows setup on a command line. This functionality is available in Windows 10, version 1511 and later.
The different parameters that can be used with Windows 10 Setup.exe are described in this topic.
Setupconfig.ini files can contain single parameters, or parameters and value pairs.
Do not include “/” characters, and with parameter and value pairs, include “=” between the two.
For example, you create a Setupconfig.ini with the following. Note that the header [SetupConfig]
is required.
Location of File : “%systemdrive%\Users\Default\AppData\Local\Microsoft\Windows\WSUS\SetupConfig.ini”
Setupconfig.ini file is not present in the location specified on windows 10 machine. we need to copy the file to the location to run setuphost.exe process at a high priority.
How do I get Setupconfig.ini Copied to each and every machine Automatically?
I have embedded a discovery and remediation script which will create setupconfig.ini automatically on the required location with priority high using SCCM Baseline
Download Baseline “BasePriority=High” from here.
What Does the Baseline Do?
Baseline has Discovery Script and remediation Script.
Discovery Script will detect if fileSetupConfig.ini is present on location or not.
$res =Test-Path C:\Users\Default\AppData\Local\Microsoft\Windows\WSUS\SetupConfig.ini
if($res -eq "True"){$compliance = "True"}
else
{$compliance = "False"}
$compliance
On Non-compliance, the Remediation script will be executed, which will create a Setupconfig.ini file with a “High” priority Parameter at required location. I am using the same script mentioned on the Microsoft portal
I have done some changes as below :
#Parameters
Param(
[string] $PriorityValue = "Normal"
) -- Commented whole statement as i will be specifying value directly.
#Variable for ini file path
$iniFilePath = "$env:SystemDrive\Users\Default\AppData\Local\Microsoft\Windows\WSUS\SetupConfig.ini"
#Variables for SetupConfig
$iniSetupConfigSlogan = "[SetupConfig]"
$iniSetupConfigKeyValuePair =@{"Priority"="High";} --Specifying Value Instaed
Once you have imported the baseline in SCCM you are good to deploy on Collection. I have deployed baseline to windows 10 1809 collection.
Let’s test it now
Before
After Baseline is Applied
Let’s configure Baseline to populate compliant machines in the collection so that we can deploy windows 10 1909 upgrade on that collection
Next
Next
Summary
Let’s Deploy windows 10 Servicing Update to collection: BasePriority=High_Workstations | Windows 10 v1809_Compliant
1909 Upgrade is listed as available for installation in the software center
Let’s install it and see at what priority it’s installing
If the client setting is configured to set thread priority as “Normal” then the parameter Prioirity=High in setupconfig.ini will be overridden to Normal.
Conclusion: If you are using windows 10 servicing as the primary method of upgrading the Windows 10 version to the latest then using this automation method will speed up the upgrade.