J'ai recherché un moyen propre de désinstaller une mise à jour de sécurité MSOffice sur un grand nombre de postes de travail. J'ai trouvé des solutions maladroites, mais rien de plus propre ou général comme l'utilisation de PowerShell et get-wmiobject
avec Win32_QuickFixEngineering
et la méthode .Uninstall
sur l'objet résultant.PowerShell: Comment rechercher et désinstaller une mise à jour MS Office
[Apparemment, Win32_QuickFixEngineering se réfère uniquement aux correctifs Windows. Voir: http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/93cc0731-5a99-4698-b1d4-8476b3140aa3]
Question 1: Est-il impossible d'utiliser get-wmiobject
pour trouver les mises à jour MSOffice? Il y a tellement de classes et d'espaces de noms que je me demande.
Cette particualar mise à jour Office (KB978382) se trouvent dans le registre ici (pour Office Ultimate):
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\{91120000-002E-0000-0000-0000000FF1CE}_ULTIMATER_{6DE3DABF-0203-426B-B330-7287D1003E86}
qui montre bien vouloir la commande de désinstallation de:
msiexec /package {91120000-002E-0000-0000-0000000FF1CE} /uninstall {6DE3DABF-0203-426B-B330-7287D1003E86}
et le dernier GUID semble constant entre les différentes versions d'Office.
J'ai également trouvé la mise à jour comme celui-ci:
$wu = new-object -com "Microsoft.Update.Searcher"
$wu.QueryHistory(0,$wu.GetTotalHistoryCount()) | where {$_.Title -match "KB978382"}
J'aime cette recherche, car il ne nécessite pas de farfouillé dans le registre, mais:
Question 2: Si je l'ai trouvé comme ça, que puis-je faire avec les informations trouvées pour faciliter la désinstallation?
Merci
'CreateUpdateInstaller()' doit être appelé d'un processus élevé. Par conséquent, il ne peut pas être utilisé par l'intermédiaire de 'invoke-command'. – mbrownnyc