[Windows] Is there a way to install a single Windows Update by KB article ID?

I don’t see this functionality in the win_updates module, but I wanted to ask. I have a prerequisite on Windows 7 to install KB2999226 and KB2842230. I’d prefer to not install every available update to preserve consistency, portability, reproducibility, etc. Is there an easy way to do this?

P.S. I need those KBs so Ansible itself can install/upgrade Chocolatey properly. I’ve installed them manually on a test box to verify they fix my Ansible/Chocolatey issues.

This functionality isn’t currently implemented on win_updates. I’ve had a few people ask for it, and I might have time to implement it for 2.3, as it’s not terribly difficult so long as we stick to “limit the update search/install to these KBs” and not “force install exactly these KBs”.

Unfortunately I believe KB2842230 is a hotfix, and thus not available on Windows Update- we don’t yet have a supported method to install hotfixes under WinRM. wusa.exe is the only supported method, and it fails under WinRM (likely for the same reason that makes the win_updates module so complex). If you have to touch the box anyway, you might do better to just upgrade to Powershell 4 or 5.

-Matt

You can install hotfixes if necessary, although its a bit of a faff.

see https://support.microsoft.com/en-us/kb/27738398

You have to use wusa with /extract to unpack the update file (which does work over winrm) and then use dism.exe to install the cab.

Example below.

Hope this helps,

Jon

  • name: check if Windows8.1-KB2999226-x64.msu hotfix has been applied
    raw: Get-Hotfix -Id KB2999226
    register: hotfix_status
    ignore_errors: true

  • name: show hotfix status
    debug:
    var: hotfix_status

Unfortunately you can’t use wusa directly to install windows updates.

see https://support.microsoft.com/en-us/kb/2773898 for details

you have to unpack the update file and then use dism.exe to install the cab

  • name: unpack the hotfix if needed
    raw: ‘wusa C:\deployment\current\Windows8.1-KB2999226-x64.msu /extract:C:\deployment\archive’
    when: “hotfix_status.rc == 1”

  • name: use dism to install the cab containing the hotfix
    raw: ‘dism.exe /online /add-package /PackagePath:C:\deployment\archive\Windows8.1-KB2999226-x64.cab’
    when: “hotfix_status.rc == 1”

Thanks Jon- that’s a great workaround!