Oct 31 2011

Powershell: WSUS comparer patchs approuvés entre deux groupes

Ce script compare les KB approuvées entre deux groupes d’ordinateurs WSUS ce qui peut etre utile quand vous configurez un groupe de machines de test et un de production, vous pouvez lire cet article de Group Policy Central pour plus de détails sur ce type de configuration via de clients WSUS via GPO (voir chapitre Implement a WSUS Update Test Group of Computers).

Pour connaitre le statut d’une mise à jour nous allons utiliser  l’espace de nom Microsoft.UpdateServices.Administration (enumeration UpdateApprovalAction), le code suivant parcoure toutes les KB et retourne son statut de validation pour l’ensemble des groupes d’ordinateurs.

[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($wsusserver,$False)
$updateScope = new-object Microsoft.UpdateServices.Administration.UpdateScope;
$updateScope.UpdateApprovalActions =[Microsoft.UpdateServices.Administration.UpdateApprovalActions]::Install -bor [Microsoft.UpdateServices.Administration.UpdateApprovalActions]::Uninstall -bor [Microsoft.UpdateServices.Administration.UpdateApprovalActions]:: All -bor [Microsoft.UpdateServices.Administration.UpdateApprovalActions]::NotApproved
 
$updates = $wsus.GetUpdates($updateScope)
 
$groups = $wsus.GetComputerTargetGroups()
 
foreach( $update in $updates){
 
    foreach($group in $groups) {
 
    $status = "Pending"
 
    #MSDN update status:
    #All: Use to query all updates, regardless of their action.
    #Install: Client installs the update.
    #NotApproved :The Update will not be available for clients. This value can be used in a simple targeting ComputerTargetGroup to "override" a UpdateApproval made to the "All Computers" ComputerTargetGroup.
    #Uninstall: Client removes the update.
 
        if ($update.GetUpdateApprovals($group).Count -ne 0)
        {$status = $update.GetUpdateApprovals($group)[0].Action}
    write-host ($update.Title + ';' + $group.Name + ';' + $status)
    }
}

Les deux groupes de production et de test héritent du groupe “All Computers”:

Sont récupérés le statut de chaque KB pour les groupes suivants:

  • $Allstatus: Groupe WSUS “All computers”, valeur par défaut “Not Approved“.
  • $statusprod: Groupe WSUS comportant vos machines de production, valeur par défaut “Pending“, dans ce cas hérite de “All computers”.
  • $statusqualif: Groupe WSUS avec vos machines de qualification, valeur par défaut “Pending“, dans ce cas hérite de “All computers”.

Si $statusprod est différent de $statusqualif alors le statut de chaque groupe est donné, si aucune valeur n’est renseignée pour l’un des deux groupes (Pending) alors le statut du groupe All computers est donné.

Pour télécharger le script comparant le statut de validation des patchs WSUS entre deux groupes c’est ici:

Le script retourne un fichier .csv avec comme informations:

  • Le Nom de la KB.
  • Le statut de validation pour le groupe de production en indiquant l’héritage de All Computers si besoin.
  • Le statut de validation pour le groupe de test en indiquant l’héritage de All Computers si besoin.
  • La classification MSRC du patch (voir cet article MSDN pour les valeurs possibles).
  • Le bulletin de sécurité MS auquel il se rapporte.
  • Les produits auxquels cette KB s’applique.

Changer les valeurs par défaut suivantes:

  • $wsusserver: Nom de votre serveur WSUS.
  • $grqualif: Nom du groupe WSUS des ordinateurs de tests.
  • $grprod: Nom du groupe WSUS des ordinateurs en production.

Si vous voulez plus de scripts PowerShell sur WSUS je vous conseille ce lien du technet script center.

This post is also available in: Anglais

2 Comments

  • By Pierre, November 4, 2011 @ 9:25 pm

    Ca me dit qqchose ce code 🙂

  • By ldap389, November 4, 2011 @ 10:40 pm

    Normal, il est de la même famille que celui ci, a faire chauffer avant toute réunion de RSSI 😉

Other Links to this Post

RSS feed for comments on this post. TrackBack URI

Leave a comment

*

WordPress Themes

Blossom Icon Set

Software Top Blogs