Skip to main content

Set Windows Updates to Default

Summary

This task removes any registry entries that may be preventing Windows updates and restores the default Windows Update settings, fully re-enabling updates for the user.

Sample Run

Sample Run Image 1
Sample Run Image 2

Task Creation

Create a new Script Editor style script in the system to implement this task.

Task Creation Image 1
Task Creation Image 2

Name: Set Windows Updates to Default
Description: This task removes all the possible registry entries that disable Windows Update on a machine.
Category: Custom

Task Creation Image 3

Task

Navigate to the Script Editor section and start by adding a row. You can do this by clicking the Add Row button at the bottom of the script page.

Add Row Image

A blank function will appear.

Blank Function Image

Row 1 Function: PowerShell Script

Search and select the PowerShell Script function.

PowerShell Script Selection

The following function will pop up on the screen:

PowerShell Function Popup

Paste in the following PowerShell script and set the expected time of script execution to 600 seconds. Click the Save button.

#region Strapper
[Net.ServicePointManager]::SecurityProtocol = [Enum]::ToObject([Net.SecurityProtocolType], 3072)
Get-PackageProvider -Name NuGet -ForceBootstrap | Out-Null
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
try {
Update-Module -Name Strapper -ErrorAction Stop
} catch {
Install-Module -Name Strapper -Repository PSGallery -SkipPublisherCheck -Force
Get-Module -Name Strapper -ListAvailable | Where-Object { $_.Version -ne (Get-InstalledModule -Name Strapper).Version } | ForEach-Object { Uninstall-Module -Name Strapper -MaximumVersion $_.Version }
}
(Import-Module -Name 'Strapper') 3>&1 2>&1 1>$null
Set-StrapperEnvironment
#endregion
$failures = @()
$properties = @(
'NoAutoUpdate',
'NoWindowsUpdate',
'DisableWindowsUpdateAccess',
'SetDisableUXWUAccess'
)
#For Computer and System account
$pathArray = @(
'HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate',
'HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate\AU',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate',
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate\AU',
'HKLM:\SYSTEM\Internet Communication Management\Internet Communication',
'Registry::HKEY_USERS\S-1-5-18\Software\Policies\Microsoft\Windows\WindowsUpdate',
'Registry::HKEY_USERS\S-1-5-18\Software\Policies\Microsoft\Windows\WindowsUpdate\AU',
'Registry::HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate',
'Registry::HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate\AU'
)
foreach ( $regPath in $pathArray ) {
foreach ( $property in $properties ) {
if ( Get-ItemProperty -Path $regPath -Name $property -ErrorAction SilentlyContinue ) {
try {
Set-ItemProperty -Path $regPath -Name $property -value 0 -Force -ErrorAction Stop
} catch {
$failure = [pscustomobject]@{
RegistryPath = $regPath
PropertyName = $property
FailureMessage = "Failed to Set property: $($Error[0].Exception.Message)"
}
$failures += $failure
}
}
}
}
#For User Account
$pathArray = @(
'Software\Policies\Microsoft\Windows\WindowsUpdate',
'Software\Policies\Microsoft\Windows\WindowsUpdate\AU',
'Software\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate',
'Software\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate\AU',
'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
)
foreach ( $regPath in $pathArray ) {
foreach ( $property in $properties ) {
if ( Get-UserRegistryKeyProperty -Path $regPath -Name $property -ErrorAction SilentlyContinue ) {
try {
Set-UserRegistryKeyProperty -Path $regPath -Name $property -Value 0 -Force -ErrorAction Stop
} catch {
$failure = [pscustomobject]@{
RegistryPath = $regPath
PropertyName = $property
FailureMessage = "Failed to set property: $($Error[0].Exception.Message)"
}
$failures += $failure
}
}
}
}
if ( $failures ) {
throw ( $failures | Out-String )
} else {
return 'Success'
}

alt text

Row 2: Function: Script Log

In the script log message, simply type %output% so that the script will send the results of the PowerShell script above to the output on the Automation tab for the target device.

Script Log Image
Script Log Output

Completed Task

Completed Task Image

Output

  • Script Log