title: PowerShell: How to find and uninstall a MS Office Update
body: <p>I've been hunting for a clean way to uninstall an MSOffice security update on a large number of workstations.  I've found some awkward solutions, but nothing as clean or general like using PowerShell and <code>get-wmiobject</code> with <code>Win32_QuickFixEngineering</code> and the <code>.Uninstall</code> method on the resulting object.  </p>
  
  <p>[Apparently, Win32_QuickFixEngineering only refers to Windows patches.  See: <a href="http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/93cc0731-5a99-4698-b1d4-8476b3140aa3" rel="nofollow noreferrer">http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/93cc0731-5a99-4698-b1d4-8476b3140aa3</a> ]  </p>
  
  <p>Question 1: Is there no way to use <code>get-wmiobject</code> to find MSOffice updates?  There are so many classes and namespaces, I have to wonder.  </p>
  
  <p>This particualar Office update (KB978382) can be found in the registry here (for Office Ultimate):  </p>
  
  <p><code>HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{91120000-002E-0000-0000-0000000FF1CE}_ULTIMATER_{6DE3DABF-0203-426B-B330-7287D1003E86}</code></p>
  
  <p>which kindly shows the uninstall command of:  </p>
  
  <p><code>msiexec /package {91120000-002E-0000-0000-0000000FF1CE} /uninstall {6DE3DABF-0203-426B-B330-7287D1003E86}</code> </p>
  
  <p>and the last GUID seems constant between different versions of Office.  </p>
  
  <p>I've also found the update like this:<br>
      <code>$wu = new-object -com "Microsoft.Update.Searcher"</code><br>
      <code>$wu.QueryHistory(0,$wu.GetTotalHistoryCount()) | where {$_.Title -match "KB978382"}</code></p>
  
  <p>I like this search because it doesn't require any poking around in the registry, but:  </p>
  
  <p>Question 2: If I've found it like this, what can I do with the found information to facilitate the Uninstall?</p>
  
  <p>Thanks</p>