The Powershell below, calls all of the tools listed for it here.
#begin script
if (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
"Running elevated; good."
""
} else {
"Not running as elevated. Starting elevated shell."
Start-Process powershell -WorkingDirectory $PWD.Path -Verb runAs -ArgumentList "-noprofile -noexit -file $PSCommandPath"
return "Done. This one will now exit."
""
}
Set-ExecutionPolicy Bypass -Scope Process -Force
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12;
$dfolder = "C:\OptimizeTemp"
$ps_script_list = @(
'mma-appx-etc.ps1',
'RunDevNodeClean.ps1',
'wt_removeGhosts.ps1',
'TweakDrives.ps1',
'TweakSMB.ps1',
'OWTAS.ps1',
'OVSS.ps1',
'CATE.ps1',
'TweakHardware.ps1'
'TweakMemTCP.ps1'
)
mkdir $dfolder
"Downloading..."
ForEach ($ps_script in $ps_script_list) {
$download_url = "https://github.com/jebofponderworthy/windows-tools/raw/master/tools/$ps_script"
""
"--- Downloading $ps_script... ---"
Invoke-WebRequest -Uri $download_url -Outfile "$dfolder\$ps_script"
}
""
"Running..."
ForEach ($ps_script in $ps_script_list) {
$run_script = "$dfolder\$ps_script"
& $run_script
Remove-Item "$dfolder\$ps_script"
}
Remove-Item $dfolder -Recurse -Force
#end of script
Categories:
Windows OS-Level Issues
Tools

Run this in administrative Powershell:
wmic product where "name like '%ITSPlatform%'" call uninstall /nointeractive
wmic product where "name like '%ITSPlatformManager%'" call uninstall /nointeractive
wmic product where "name like '%ScreenConnect Client%'" call uninstall /nointeractive
Stop-Service -Name "SAAZappr"
Stop-Service -Name "SAAZDPMACTL"
Stop-Service -Name "SAAZRemoteSupport"
Stop-Service -Name "SAAZScheduler"
Stop-Service -Name "SAAZServerPlus"
Stop-Service -Name "SAAZWatchDog"
If (Test-Path "C:\Program Files (x86)\SAAZOD"){
Remove-Item "C:\Program Files (x86)\SAAZOD" -Force -Recurse
} else {}
If (Test-Path "C:\Program Files (x86)\SAAZODBKP"){
Remove-Item "C:\Program Files (x86)\SAAZODBKP" -Force -Recurse
} else {}
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Virtual Machine\Guest" -Name "ITSPlatformID" -Force
Remove-Item "HKLM:\SOFTWARE\WOW6432Node\SAAZOD" -Force
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\SAAZappr" -Force
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\SAAZDPMACTL" -Force
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\SAAZRemoteSupport" -Force
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\SAAZScheduler" -Force
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\SAAZServerPlus" -Force
Remove-Item "HKLM:\SYSTEM\CurrentControlSet\Services\SAAZWatchDog" -Force
Categories:
Tools

It’s built into most OEM installs of Windows 10 and 11, and can often be installed. On server builds it’s touch and go.
To see if you have it, try winget list
from CMD or Powershell.
One good way to test it, is to install Microsoft .NET framework (SDK) 6, thus, from administrative Powershell:
winget install --id Microsoft.DotNet.Runtime.6 --silent --accept-source-agreements
I learned just now that if you add other seemingly valuable options to the one above, e.g., --scope machine
, at least while running as SYSTEM, it will fail citing package not found. So you’ll want to test carefully.
Here’s one proven just now for 7zip (there’s a “search” option in winget to get the ID):
winget install --exact --id 7zip.7zip --accept-package-agreements --silent --scope machine
Here’s one for Google Chrome, needs a bit of extra:
winget.exe install --exact --id Google.Chrome --silent --accept-package-agreements --accept-source-agreements --scope machine
And here’s a way to upgrade everything Winget can upgrade. There are some systems to not use this on, e.g., anything with some Autodesk products:
winget upgrade --all --include-unknown
If you do want to use it from the SYSTEM account, in scripting, it gets interesting. You’ll want to first run the below, and then winget will run as expected.
# Function to find the path to winget.exe
function Find-WinGet-Path {
# Get the WinGet path (for use when running in SYSTEM context).
$WinGetPathToResolve = Join-Path -Path $ENV:ProgramFiles -ChildPath 'WindowsApps\Microsoft.DesktopAppInstaller_*_*__8wekyb3d8bbwe'
$ResolveWinGetPath = Resolve-Path -Path $WinGetPathToResolve | Sort-Object {
[version]($_.Path -replace '^[^\d]+_((\d+\.)*\d+)_.*', '$1')
}
if ($ResolveWinGetPath) {
# If we have multiple versions - use the latest.
$WinGetPath = $ResolveWinGetPath[-1].Path
}
# Get the User-Context WinGet exe location.
$WinGetExePath = Get-Command -Name winget.exe -CommandType Application -ErrorAction SilentlyContinue
# Select the correct WinGet exe
if (Test-Path -Path (Join-Path $WinGetPath 'winget.exe')) {
# Running in SYSTEM-Context.
$WinGet = Join-Path $WinGetPath 'winget.exe'
} elseif ($WinGetExePath) {
# Get User-Context if SYSTEM-Context not found.
$WinGet = $WinGetExePath.Path
} else {
Write-Output 'WinGet not Found!'
Stop-Transcript
exit 1
}
# Return WinGet path
return ($WinGet -replace '\winget.exe','')
}
Function Add-PathVariable {
param (
[string]$addPath
)
if (Test-Path $addPath){
$regexAddPath = [regex]::Escape($addPath)
$arrPath = $env:Path -split ';' | Where-Object {$_ -notMatch
"^$regexAddPath\\?"}
$env:Path = ($arrPath + $addPath) -join ';'
} else {
Throw "'$addPath' is not a valid path."
}
}
Add-PathVariable (Find-Winget-Path)
Installing has been even more interesting. I’ve tried a lot of things. The below worked very well recently on Server 2019 as well as Server 2022. It is a script which installs prerequisites, and installs another script called winget-install
. After the installations, it will run winget-install. Once successful, winget runs.
#begin script
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted -Force > $null
Function PrepareModule {
param( [string]$ModuleName )
"Preparing Powershell environment: Getting online " + $ModuleName + " info..."
$OnlineModuleInfo = Find-Module $ModuleName -Repository PSGallery
"Preparing Powershell environment: Getting local " + $ModuleName + " info (if exists)..."
$LocalModuleInfo = Get-InstalledModule $ModuleName -ErrorAction SilentlyContinue > $null
If ($OnlineModuleInfo.Version -ne $LocalModuleInfo.Version) {
"Preparing Powershell environment: Removing old " + $ModuleName + " (if exists)..."
Uninstall-Module -Name $ModuleName -ErrorAction SilentlyContinue > $null
"Preparing Powershell environment: Installing new " + $ModuleName + "..."
Install-Module -Name $ModuleName -Repository PSGallery
"Preparing Powershell environment: Importing new " + $ModuleName + "..."
Import-Module -Name $ModuleName
}
}
"Setting up to use Powershell Gallery..."
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
Set-PSRepository -InstallationPolicy Trusted -Name PSGallery
PrepareModule("NuGet")
Install-Script -Name winget-install
winget-install
#End script
Categories:
Powershell
Windows Installer, Updates, Patching
HP Support Assistant is the oft-default tool, not suitable for automation. It does work, but often misses items, and sometimes just generally coughs. There is also the HP Image Assistant:
ftp.ext.hp.com/pub/caps-softpaq/cmit/HPIA.html
Its primary purpose is maintaining reference images, but it has a great command-line mode for full automatic downloads and updates. Download the installer, complete it, close the GUI tool, open Powershell or CMD, CD to the folder it created in command-line (it’s C:\SWSETUP\something), and run:
.\HPImageAssistant /Operation:Analyze /Category:All,Accessories /selection:All /action:Install /silent /reportFolder:c:\HPIA\Report /softpaqdownloadfolder:c:\HPIA\download
Then monitor its behavior in TASKMGR, and see the downloads piling up in C:\HPIA\download. If it needs a reboot, it will do it automatically. Even if it doesn’t, reboot is recommended, just to keep everything as smooth as possible.
Categories:
Windows Installer, Updates, Patching
BIOS
Best I know is Dell Command Update. Can be installed using winget:
winget install Dell.CommandUpdate.Universal
This is a GUI tool, does a very good job.
Categories:
Windows Installer, Updates, Patching
BIOS
Webroot removal
article #1610, updated 12 days ago
This sometimes Just Plain Works:
"C:\Program Files (x86)\Webroot\WRSA.exe" –uninstall
and sometimes needs the Webroot admin password. If that password is requested but not available, safe mode activity may be the only option.
Categories:
Antivirus/Antimalware Tools and Issues

Sometimes Windows’ relationship with 365, or a user’s profile, or just a user on a PC or terminal server, will not log into 365. This appears to be the result of corruption of cached credentials.
The most straightforward way is probably to nuke all User/Windows/Azure relationship and recreate. As written, this would probably be very bad on a terminal server, because it will nuke the relationship for all users and all profiles. So far, no per-user commands identified.:
Remove 365 accounts from “Access Work and School”, then run these:
dsregcmd /debug /cleanupaccounts
dsregcmd /debug /leave
from administrative CMD, and also from SYSTEM (paexec or psexec can do this), then reboot, then remove from Access Work and School if still there, then set up user relationship(s) again.
But today we have a report that dsregcmd /status did something, unknown, which fixed one terminal server user. Not sure what. Next time I plan to run many tests with this info:
ss64.com/nt/dsregcmd.html
And if you see error CAA5021, do this:
Search for Manage user certificates in the search bar and open it from Best match. Then navigate to Current User\Personal\Certificates and make sure the MS-Organization-Access and MS-Organization-P2P-Access entries are deleted.
No reboot needed for that last.
Categories:
Microsoft 365
Azure
Seen it twice now, different audio hardware. After Windows 11 upgrade, audio shows working in Device Manager, but does not actually work. So far, the solution is to get into Device Manager, and delete the driver items for the hardware which should be working, from both “Software Devices” and “Sound, video and game controllers”. Then reboot. After the reboot, both times, it created two new sections at the top for audio, and then sound began working fine. Here’s an example:
Categories:
Windows OS-Level Issues
Audio-Video

This method uses Powershell module PsWindowsUpdate.
First, a complete script which gets the module in and updates everything available from Microsoft, including patches and drivers and firmware:
#begin script
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Set-Executionpolicy RemoteSigned -Scope Process -Force
Install-PackageProvider -Name NuGet -Force -ErrorAction 'SilentlyContinue' > $null
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
If (Get-InstalledModule -Name PsWindowsUpdate -ErrorAction 'SilentlyContinue') {
Update-Module -Name PSWindowsUpdate -Force
} Else {
Install-Module -Name PSWindowsUpdate -Force
}
Import-Module PSWindowsUpdate
Install-WindowsUpdate -AcceptAll -AutoReboot
# end script
Next, the bits. We do need to install and keep up a module.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Set-Executionpolicy RemoteSigned -Scope Process -Force
Install-PackageProvider -Name NuGet -Force -ErrorAction 'SilentlyContinue' > $null
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
If (Get-InstalledModule -Name PsWindowsUpdate -ErrorAction 'SilentlyContinue') {
Update-Module -Name PSWindowsUpdate -Force
} Else {
Install-Module -Name PSWindowsUpdate -Force
}
Import-Module PSWindowsUpdate
Then we can check the list of available updates:
Get-WindowsUpdate
And then we probably want to actually do updates. There are good reasons and multiple methods to be careful. Alas, thus far, there does not appear to be a way to install updates a given number of days after release, e.g., 30, so as to give Microsoft time to respond to issues. Here is a glancing overview of what we do have:
- Lots of firmware is being sent by Microsoft now, and some of this is more up-to-date than that available from the vendors. But there is risk in these, don’t forget. You may find that you want to install current Windows patches, but no drivers, firmware, services packs, feature packs, etc. To do this:
Install-WindowsUpdate -NotCategory "Drivers","Service Packs","FeaturePacks" -NotTitle "preview" -AcceptAll
And to do it while ignoring reboot:
Install-WindowsUpdate -NotCategory "Drivers","Service Packs","FeaturePacks" -NotTitle "preview" -AcceptAll -IgnoreReboot
The -IgnoreReboot
ignores all relevant reboot automata. -NotTitle "preview"
omits all updates with the word “preview” in their name.
But sometimes, e.g. with a new PC install, we’ll want to install all updates and reboot automatically:
Install-WindowsUpdate -AcceptAll -AutoReboot
- You may find that you want to omit granularly, e.g., specific build upgrades. If you found one marked KB1234567, you would install all and omit that one thus:
Install-WindowsUpdate -NotKBArticleID KB1234567 -AcceptAll
- If you wanted to do that, and explicitly not reboot if indicated:
Install-WindowsUpdate -NotKBArticleID KB1234567 -AcceptAll -IgnoreReboot
- If you had two KBs to omit:
Install-WindowsUpdate -AcceptAll -NotKBArticleID "KB1234567,KB7654321"
- There are other noteworthy items. Lots of firmware is being sent by Microsoft now, and some of this is more up-to-date than that available from the vendor. But there is risk in firmware updates, don’t forget. Some of the items don’t have KBs, and there are two other command-line arguments to omit those,
-NotTitle
and -NotUpdateID
.
Reset-WUComponents
- To get a full list of functions:
Get-Command -Module PSWindowsUpdate
Get-Help
works for all of them.
Categories:
Windows Installer, Updates, Patching
Powershell
Older hosted Exchange mailboxes, are starting to fail Autodiscover in newer Outlook installs. Below is a registry fix which gets them working. Apply the change and then reboot, then try it again.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover]
"ExcludeHttpsRootDomain"=dword:00000001
"PreferLocalXML"=dword:00000000
"ExcludeHttpRedirect"=dword:00000000
"ExcludeHttpsAutodiscoverDomain"=dword:00000001
"ExcludeScpLookup"=dword:00000001
"ExcludeSrvRecord"=dword:00000001
"ExcludeExplicitO365Endpoint"=dword:00000001
Categories:
Exchange and Exchange Online
Outlook & Exchange / Exchange Online