Question Pourquoi "get-hotfix" et "wmic qfe list" dans Powershell ne contiennent-ils pas les mises à jour installées?


J'essaie d'écrire un script pour m'assurer qu'un certain correctif est installé. Sur l'un de nos ordinateurs de test exécutant Windows 8.1, get-hotfix renvoie une liste incomplète de correctifs:

enter image description here

Pourtant, il y a des tonnes de correctifs dans le panneau de configuration Programmes et fonctionnalités:

enter image description here

Toutes nos autres machines de test, y compris celles installées avec Windows 8.0 et 8.1, fonctionnent correctement. Une idée pourquoi c'est? Comment puis-je obtenir une liste complète des correctifs de Powershell?

Modifier:  wmic qfe list affiche uniquement les quatre mêmes correctifs que get-hotfix ainsi que.


4
2017-11-17 23:08


origine


Merci @PJMahoney - J'ai essayé ces suggestions sans succès. get-wmiobject -class win32_quickfixengineering montre les mêmes résultats que get-hotfix. - a paid nerd


Réponses:


Je crois le Get-Hotfix commandlet exploite le Win32_QuickFixEngineering Classe WMI pour répertorier les mises à jour Windows, mais retourne uniquement les mises à jour fournies par Service basé sur les composants (CBS). Les mises à jour fournies par Microsoft Windows Installer (MSI) ou le site de mise à jour Windows ne sont pas renvoyées par Get-Hotfix/Win32_QuickFixEngineering.

Vous pouvez essayer d'utiliser l'API Windows Update via PowerShell comme dans l'exemple ci-dessous. Donnez-lui un coup et faites-nous savoir s'il montre les mises à jour manquantes.

$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.Search("IsInstalled=1").Updates | ft -a Date,Title

MODIFIER: Pour rechercher dans les résultats, vous pouvez utiliser le Where-Object  commandlet (ou alias Where) et filtrer pour un correctif spécifique:

$Searcher.Search("IsInstalled=1").Updates | Where {$_.Title -like "*KB2760587*"} | ft date,title

8
2017-11-18 18:59



Merci @bentek! Ça le fait. Étant donné que je suis relativement nouveau sur Powershell, cela vous dérangerait-il également de me montrer un bon moyen d'interroger ces résultats pour savoir si un correctif spécifique est inclus? - a paid nerd
En outre, est-ce moins compatible avec les anciennes versions de Windows que get-hotfix? - a paid nerd
Édité ma réponse pour inclure une requête simple pour un correctif spécifique. - bentek
On dirait que je veux utiliser $Searcher.Search("IsInstalled=1").Updates | ft -a Date,Title au lieu. - a paid nerd
FYI: Voir aussi: Microsoft Update Client Install History en dessous de social.technet.microsoft.com/wiki/contents/articles/ pour une version différente de cette solution (pour moi ce qui précède a échoué, mais cela m'a conduit à ce lien Technet qui a fonctionné). - JohnLBevan


Vous devez utiliser différentes méthodes pour répertorier les mises à jour installées par différentes méthodes. comme installé par wsus ou configmgr

Jetez un oeil ici

https://social.technet.microsoft.com/wiki/contents/articles/4197.how-to-list-all-of-the-windows-and-software-updates-applied-to-a-computer.aspx


1
2017-08-15 21:02