Create a GPO “Install PSWindowsUpdates Module”.
Actions Settings:
Program: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Arguments: -ExecutionPolicy Bypass -File \DC1\Shared\install-PSWindowsupdate.PS1
Set-ExecutionPolicy RemoteSigned
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
Install-Module PSWindowsUpdate -Force
On Windows 10 PC:
Restarts the machine.
The task is running.
Check Task Manager and see PowerShell is running.
# Check PSWindowsUpdates has been installed.
Get-InstallModule
Create another GPO for installing Windows updates via the PSWindowsUpdates module.
Arguments: -ExecutionPolicy Bypass -File \\DC1\Shared\NewPS.PS1
PSWindowsUpdates script (\\DC1\Shared\newPS.PS1)
# This is PowerShell script to force on installing Windows Updates via PSWindowsUpdate on Windows machines
# https://www.powershellgallery.com/packages/PSWindowsUpdate/2.2.0.2
# It is created by Tung on 2021-Sep-28
# Allow PowerShell to be run on Windows machines with PSWindowsUpdate module
Set-ExecutionPolicy RemoteSigned
# Installs everything (newest version) along with required modules.
#Install-Module PSWindowsUpdate
# Import Module PSWindowsUpdate before running the script
Import-Module -Name PSWindowsUpdate
#Force Windows updates are completely downloaded, installed and then restarted. Will check if we have a WSUS server
Install-WindowsUpdate -AcceptAll -AutoReboot
# Send an email after running PSWindowsUpdate command
# Will send email if the last previous command is successful.
if ($? -eq $True){
# Use this command for TLS requirement
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Get machine name
$machinename = get-content env:computername
# Get current date and time
$currentdate = get-date
# SMTP server of Outlook.com
$SMTP = "smtp-mail.outlook.com"
# Mail from
$From = "youremail"
# Rcpt to
$To = "youremail"
# Subject line
$Subject = "Windows updates on $cname"
# Email body
$Body = "Finising running Windows updates on $machinename on $currentdate"
# Create a connection to SMTP Outlook via the port 587
$Email = New-Object Net.Mail.SmtpClient($SMTP, 587)
# Enable SSL for the connection
$Email.EnableSsl = $true
# Log in to Outlook mail server with your credential
$Email.Credentials = New-Object System.Net.NetworkCredential("youremail", "yourpassword");
# Send email syntax
$Email.Send($From, $To, $Subject, $Body)
}
Windows 10: