KB Viewer, Saver, Installer and Uninstaller
kbupdate gets you specific updates that you want, even if your system doesn't need them - you just need to know the KB number. It's essentially a command-line Windows Update Catalog.
If you're wondering about the difference between kbupdate and PSWindowsUpdate, PSWindowsUpdate gets you updates your systems needs, either from WSUS or from WU. You can exclude some, but you won't get anything that your system doesn't currently need.
Install-Module kbupdate -Scope CurrentUser# Get detailed information about KB4057119. This works for SQL Server or any other KB.
Get-KbUpdate -Name KB4057119
# Get detailed information about KB4057119 and KB4057114.
Get-KbUpdate -Name KB4057119, 4057114
# Faster. Gets, at the very least: Title, Architecture, Language, Hotfix, UpdateId and Link
Get-KbUpdate -Name KB4057119, 4057114 -Simple# Download KB4057119 to the current directory. This works for SQL Server or any other KB.
Save-KbUpdate -Name KB4057119
# Download the selected x64 files from KB4057119 to the current directory.
Get-KbUpdate -Name 3118347 -Simple -Architecture x64 | Out-GridView -Passthru | Save-KbUpdate
# Download KB4057119 and the x64 version of KB4057114 to C:\temp.
Save-KbUpdate -Name KB4057119, 4057114 -Architecture x64 -Path C:\temp# Install KB4534273 from the \\fileshare\sql\ directory on server01
Install-KbUpdate -ComputerName server01 -FilePath \\fileshare\sql\windows10.0-kb4532947-x64_20103b70445e230e5994dc2a89dc639cd5756a66.msu
# Automatically save an update, stores it in Downloads and install it from there
Install-KbUpdate -ComputerName sql2017 -HotfixId kb4486129# Uninstalls KB4498951 from server01
Uninstall-KbUpdate -ComputerName server01 -HotfixId KB4498951
# Uninstalls KB4498951 on server01 without prompts
Uninstall-KbUpdate -ComputerName server01 -HotfixId KB4498951 -Confirm:$false
# Uninstall kb4498951 from server23 and server24
Get-KbInstalledUpdate -ComputerName server23, server24 -Pattern kb4498951 | Uninstall-KbUpdate# Test to see if KB4057119 and get a bunch of info about it on server01
Get-KbInstalledUpdate -ComputerName server01 -Pattern KB4057119
Get more help
Get-Help Get-KbUpdate -Detailed- kbupdate-library - a sqlite db
- PSFramework - for PowerShell goodness
- PSSQLite - to query the included db
- PoshWSUS - to query the WSUS server when
-Source WSUSis specified
The Install-KbUpdate command uses the Invoke-DscResource to run a method of the Package or xHotFix resource against the target node. Using Invoke-DscResource bypasses the Local Configuration Manager (LCM) on the target node so should not affect your current configuration. However, if you are currently using DSC to control the desired state of your target node and you contradict the call to Invoke-DscResource you could sees issues. For example if the LCM has a Package resource saying that KB4527376 should not be installed, and then you install it with Install-KbUpdate after the install finishes the LCM will report it is not in the desired state, and depending on your LCM settings could uninstall the KB.
Thanks to all of the contributors and downloaders! Also, thanks to the redditor who helped with the description.





