Microsoft - Scripting - PowerShell - Notes - WMI - Win32_QuickFixEngineering

MSDN - Win32_QuickFixEngineering class

Oddities

  1. “Updates supplied by Microsoft Windows Installer (MSI) or the Windows update site (http://update.microsoft.com) are not returned by Win32_QuickFixEngineering.”
    Source: MSDN - Win32_QuickFixEngineering class
  2. If you do not properly (re-)format the InstalledOn property date it will show up as empty.
    1. Compare:
      $objFixes = Get-WmiObject Win32_QuickFixEngineering
      $objFixes | Select-Object CSName,HotFixID,@{Name="InstalledOn"; Expression={([datetime]$_.psbase.properties["InstalledOn"].Value).ToLocalTime()}}

      The .ToLocalTime() is not required and was added to take the local timezone into account.

    2. With:
      $objFixes = Get-WmiObject Win32_QuickFixEngineering
      $objFixes | Select-Object CSName,HotFixID,InstalledOn
  3. A “Security and Quality Rollup for .NET Framework 3.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2” may show up in the Windows Update “View update history” as one KB number and as another in Win32_QuickFixEngineering.
    1. Example: Update shows up as KB4019112 in “View update history” but is shown in Win32_QuickFixEngineering as KB4014504 (one of the sub-KBs mentioned on KB4019112) depending on which version of the .NET Framework was installed/patched. Observed on Windows Server 2008 R2, and on Windows Server 2012 R2 with KB4019111 and KB4014581.