Outright and Automate Windows 10 servicing Upgrade with Setupconfig.ini


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"}
{$compliance = "False"}

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 :

[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



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 























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.

Leave a Comment

Your email address will not be published. Required fields are marked *