Outright and Automate Windows 10 servicing Upgrade with Setupconfig.ini

 3,073 total views,  4 views today

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.

Leave a Comment

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