Comment vérifier les mises à jour installées sur un PC

Dans le cadre d’un diagnostic ou d’un audit de conformité, il peut être nécessaire de vérifier les mises à jour Windows installées sur une machine. Que ce soit en local ou à distance, plusieurs méthodes existent selon le contexte : ligne de commande, PowerShell, ou via la base de données SCCM.

Dans cet article, nous verrons comment :

  1. Vérifier les mises à jour installées avec PowerShell.
  2. Identifier les mises à jour manquantes via SQL Server sur SCCM.

Vérifier les mises à jour installées avec PowerShell

Méthode rapide : wmic qfe list

wmic qfe list

Cette commande retourne la liste des correctifs installés (hotfixes), avec des détails comme l’ID, la date d’installation, la source, etc. Elle est intégrée à Windows et ne nécessite aucun module additionnel.


💡 Alternative plus moderne : Get-WmiObject

Get-WmiObject -Class Win32_QuickFixEngineering

Cette commande retourne les mêmes informations sous forme d’objets, ce qui facilite donc l’export, le tri ou le filtrage. Exemple :

Get-WmiObject -Class Win32_QuickFixEngineering | Select-Object HotFixID, Description, InstalledOn

Vous pouvez aussi interroger un poste distant (droits requis) :

Get-WmiObject -ComputerName "NomDuPC" -Class Win32_QuickFixEngineering

🔐 Avant tout, assurez-vous que WinRM est activé sur la machine cible et que vous avez les autorisations nécessaires.


Vérifier les mises à jour manquantes via SQL Server (SCCM)

SCCM conserve un historique détaillé de la conformité des mises à jour par poste. Il est donc possible de lister les correctifs non installés sur une machine spécifique, via une requête SQL.

Exemple de requête SQL

SELECT
    CAST(DATEPART(yyyy, UI.DatePosted) AS varchar(255)) + '-' +
    RIGHT('0' + CAST(DATEPART(mm, UI.DatePosted) AS VARCHAR(255)), 2) AS 'Month Posted',
    UI.bulletinid AS 'Bulletin ID',
    UI.articleid AS 'Article ID',
    UI.Title,
    CASE WHEN CTM.ResourceID IS NOT NULL THEN '*' ELSE '' END AS 'Targeted',
    CASE WHEN UCS.Status = 2 THEN '*' ELSE '' END AS 'Is Required',
    UI.InfoURL AS 'Information',
    UI.DatePosted AS 'Date Posted',
    CDL.Deadline
FROM
    v_UpdateComplianceStatus UCS
    JOIN v_UpdateInfo UI ON UI.CI_ID = UCS.CI_ID
    LEFT JOIN v_CITargetedMachines CTM ON CTM.CI_ID = UCS.CI_ID AND CTM.ResourceID = UCS.ResourceID
    INNER JOIN v_CICategories_All CCALL ON CCALL.CI_ID = UCS.CI_ID
    INNER JOIN v_CategoryInfo CINF ON CCALL.CategoryInstance_UniqueID = CINF.CategoryInstance_UniqueID
        AND CINF.CategoryTypeName = 'UpdateClassification'
    JOIN v_R_System vrs ON vrs.ResourceID = UCS.ResourceID
    OUTER APPLY (
        SELECT MIN(a.EnforcementDeadline) AS Deadline
        FROM v_CIAssignment a
        JOIN v_CIAssignmentToCI atc ON atc.AssignmentID = a.AssignmentID AND atc.CI_ID = UCS.CI_ID
    ) CDL
WHERE
    vrs.Name0 = 'Computer_Name'
ORDER BY
    UI.DatePosted, UI.ArticleID

🧩 Remplacez Computer_Name par le nom réel de la machine cible.

Cette requête vous retournera alors :

  • Le bulletin et l’article Microsoft associés,
  • Le statut de ciblage (assigné ou non),
  • Le statut de conformité (requis ou non),
  • La date de publication de la mise à jour,
  • Et éventuellement la deadline de déploiement.

Conclusion

En complément de l’interface graphique de Windows Update, plusieurs méthodes avancées permettent de vérifier précisément l’état des mises à jour d’un poste :

  • PowerShell pour une vérification rapide, locale ou distante.
  • SQL Server pour une analyse plus poussée via SCCM, y compris les mises à jour manquantes.

Ces approches sont donc particulièrement utiles dans les scénarios de dépannage, de reporting de conformité, ou lors de l’analyse post-mortem d’un incident lié à la sécurité ou à la stabilité du système.

Retour en haut