Guide complet de la maintenance sup de WSUS et configuration Manager

Cet article aborde certaines questions courantes sur la maintenance WSUS pour les environnements Configuration Manager.

Version du produit d’origine :   Windows Serveurs, Windows Server Update Services, Configuration Manager
Numéro de la ko d’origine :   4490644

Introduction

Les questions sont souvent sur le point de savoir comment exécuter correctement cette maintenance dans un environnement Configuration Manager ou à quelle fréquence dois-je exécuter cette maintenance. Il n’est pas rare que les administrateurs de Configuration Manager ignorent que la maintenance WSUS doit être du tout exécuté. La plupart d’entre nous venons de configurer des serveurs WSUS, car il s’agit d’un prérequis pour un point de mise à jour logicielle (SUP). Une fois le sup est installé, nous fermerons la console WSUS et prétendons qu’elle n’existe pas. Malheureusement, cela peut être problématique pour les clients Configuration Manager et les performances globales du serveur WSUS/SUP.

En comprenant que cette maintenance doit être effectuée, vous vous demandez quelle maintenance vous devez faire et à quelle fréquence vous devez le faire. La réponse est que vous devez effectuer une maintenance mensuelle. La maintenance est facile et ne prend pas de temps pour les serveurs WSUS qui ont été bien maintenus depuis le début. Toutefois, si cela fait un certain temps que la maintenance WSUS a été effectuée, le nettoyage peut être plus difficile ou chronophage la première fois. Il sera beaucoup plus facile ou plus rapide dans les mois suivants.

Gérer WSUS tout en supportant Configuration Manager version actuelle de la branche 1906 et versions ultérieures

Si vous utilisez configuration Manager version actuelle de la branche 1906 ou versions ultérieures, nous vous recommandons d’activer les options de maintenance WSUS dans la configuration du point de mise à jour logicielle au niveau du site de niveau supérieur pour automatiser les procédures de nettoyage après chaque synchronisation. Il gèrerait efficacement toutes les opérations de nettoyage décrites dans cet article, à l’exception de la sauvegarde et de la réindexation de la base de données WSUS. Vous devez toujours automatiser la sauvegarde de la base de données WSUS avec la réindexation de la base de données WSUS selon une planification.

Capture d’écran des options de maintenance WSUS

Pour plus d’informations sur la maintenance des mises à jour logicielles dans Configuration Manager, voir Maintenance des mises à jour logicielles.

Remarques importantes

Notes

Si vous utilisez les fonctionnalités de maintenance qui ont été ajoutées dans Configuration Manager, version 1906,vous n’avez pas besoin de prendre en compte ces éléments, car Configuration Manager gère le nettoyage après chaque synchronisation.

  1. Avant de commencer le processus de maintenance, lisez toutes les informations et instructions de cet article.

  2. Lorsque vous utilisez WSUS avec des serveurs en aval, les serveurs WSUS sont ajoutés de haut en bas, mais doivent être supprimés du bas vers le haut. Lors de la synchronisation ou de l’ajout de mises à jour, elles sont d’abord mises à jour vers le serveur WSUS en amont, puis répliquées vers les serveurs en aval. Lorsque vous effectuez un nettoyage et supprimez des éléments des serveurs WSUS, vous devez commencer en bas de la hiérarchie.

  3. La maintenance WSUS peut être effectuée simultanément sur plusieurs serveurs du même niveau. Dans ce cas, assurez-vous qu’un niveau est terminé avant de passer à la suivante. Les étapes de nettoyage et de réindexation décrites ci-dessous doivent être exécutés sur tous les serveurs WSUS, qu’il s’agit ou non d’un serveur WSUS réplica. Pour plus d’informations sur la détermination si un serveur WSUS est un réplica, voir Refuser les mises à jour non mises à jour.

  4. Assurez-vous que les SSO ne sont pas synchronisées pendant le processus de maintenance, car cela peut entraîner la perte de certains travaux déjà effectués. Vérifiez la planification de synchronisation SUP et définissez-la temporairement sur manuellement au cours de ce processus.

    Capture d’écran du paramètre de planification de synchronisation

  5. Si vous avez plusieurs SSP du site principal ou de l’administration centrale (CAS) qui ne partagent pas suSDB, considérez le serveur WSUS qui se synchronise avec le premier SUP sur le site comme résidant dans un niveau inférieur au site. Par exemple, mon site CAS a deux SSP :

    • Celui nommé Nouveau se synchronise avec Microsoft Update, il s’appellerait mon niveau supérieur (Niveau1).
    • Le serveur nommé 2012 se synchronise avec New et il est considéré dans le deuxième niveau. Il peut être nettoyé en même temps que tous mes autres serveurs de niveau 2, tels que le sup sup unique de mon site principal.

    Capture d’écran de plusieurs SSP

Effectuer la maintenance WSUS

Les étapes de base nécessaires pour une maintenance WSUS appropriée sont les suivantes :

  1. Back up the WSUS database
  2. Créer des index personnalisés
  3. Réindexer la base de données WSUS
  4. Refuser les mises à jour non mises à jour
  5. Exécuter l’Assistant Nettoyage de WSUS Server

Back up the WSUS database

Back up the WSUS database (SUSDB) by using the desired method. Pour plus d’informations, voir Créer une sauvegarde de base de données complète.

Créer des index personnalisés

Ce processus est facultatif, mais recommandé, il améliore considérablement les performances lors des opérations de nettoyage suivantes.

Si vous utilisez Configuration Manager current branch version 1906 ou une version ultérieure, nous vous recommandons d’utiliser Configuration Manager pour créer les index. Pour créer les index, configurez l’option Ajouter des index non cluster à l’option de base de données WSUS dans la configuration du point de mise à jour logicielle pour le site le plus élevé.

Capture d’écran de l’option d’index

Si vous utilisez une version antérieure de Configuration Manager ou des serveurs WSUS autonomes, suivez ces étapes pour créer des index personnalisés dans la base de données SUSDB. Pour chaque base de données SUSDB, il s’agit d’un processus à une seule étape.

  1. Assurez-vous que vous avez une sauvegarde de la base de données SUSDB.

  2. Utilisez SQL Management Studio pour vous connecter à la base de données SUSDB, de la même manière que décrit dans la section Réindexer la base de données WSUS.

  3. Exécutez le script suivant sur SUSDB pour créer deux index personnalisés :

    -- Create custom index in tbLocalizedPropertyForRevision
    USE [SUSDB]
    
    CREATE NONCLUSTERED INDEX [nclLocalizedPropertyID] ON [dbo].[tbLocalizedPropertyForRevision]
    (
         [LocalizedPropertyID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    
    -- Create custom index in tbRevisionSupersedesUpdate
    CREATE NONCLUSTERED INDEX [nclSupercededUpdateID] ON [dbo].[tbRevisionSupersedesUpdate]
    (
         [SupersededUpdateID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    

    Si des index personnalisés ont été créés précédemment, l’exécution du script à nouveau entraîne une erreur semblable à celle-ci :

    Msg 1913, Niveau 16, État 1, Ligne 4
    L’opération a échoué car un index ou des statistiques nommés « nclLocalizedPropertyID » existent déjà sur la table « dbo.tbLocalizedPropertyForRevision ».

Réindexer la base de données WSUS

Pour réindexer la base de données WSUS (SUSDB), utilisez le script T-SQL de base de données WSUS.

Les étapes de connexion à SUSDB et d’exécution de la réindexation diffèrent selon que suSDB est en cours d’exécution dans SQL Server ou Base de données interne Windows (WID). Pour déterminer où SUSDB est en cours d’exécution, vérifiez la valeur de l’entrée de Registre sur le SQLServerName serveur WSUS situé sur la HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup sous-clé.

Si la valeur contient uniquement le nom du serveur ou serveur\instance, SUSDB est en cours d’exécution sur une SQL Server. Si la valeur inclut la chaîne ou l’inclut, SUSDB est en cours d’exécution dans ##SSEE ##WID WID, comme illustré :

Capture d’écran de SqlServerName-SSEE.

Capture d’écran de SqlServerName-WID.

Si SUSDB a été installé sur WID

Si SUSDB a été installé sur WID, SQL Server Management Studio Express doit être installé localement pour exécuter le script de réindexation. Voici un moyen simple de déterminer la version de SQL Server Management Studio Express à installer :

  • Pour Windows Server 2012 ou versions ultérieures :

    • Recherchez C:\Windows\WID\Log le journal d’erreurs qui contient le numéro de version.

    • Recherchez le numéro de version dans Comment déterminer la version, l’éditionet le niveau de mise à jour de SQL Server et de ses composants. Cette valeur vous indique le niveau de Service Pack (SP) que WID exécute. Incluez le niveau SP lors de la recherche dans le Centre de téléchargement Microsoft pour SQL Server Management Studio Express.

  • Pour Windows Server 2008 R2 ou versions antérieures :

    • Go to C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\LOG and open up the last error log with Bloc-notes. En haut, il y aura un numéro de version (par exemple 9.00.4035.00 x64). Recherchez le numéro de version dans Comment déterminer la version, l’éditionet le niveau de mise à jour de SQL Server et de ses composants. Ce numéro de version vous indique le niveau de Service Pack en cours d’exécution. Incluez le niveau SP lors de la recherche dans le Centre de téléchargement Microsoft pour SQL Server Management Studio Express.

Après avoir installé SQL Server Management Studio Express, lancez-le et entrez le nom du serveur à connecter :

  • Si le système d’exploitation est Windows Server 2012 ou versions ultérieures, utilisez \\.\pipe\MICROSOFT##WID\tsql\query .
  • Si le système d’exploitation est plus Windows Server 2012, entrez \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query .

Pour WID, si des erreurs similaires à la suivante se produisent lors de la tentative de connexion à SUSDB à l’aide de SQL Server Management Studio (SSMS), essayez de lancer SSMS à l’aide de l’option Exécuter en tant qu’administrateur.

Impossible de se connecter à une erreur de serveur.

Si SUSDB a été installé sur SQL Server

Si SUSDB a été installé sur un SQL Server complet, lancez SQL Server Management Studio et entrez le nom du serveur (et l’instance si nécessaire) lorsque vous y êtes invité.

Conseil

Sinon, un utilitaire appelé peut être utilisé pour sqlcmd exécuter le script de réindexation. Pour plus d’informations, voir Réindexer la base de données WSUS.

Exécution du script

Pour exécuter le script dans SQL Server Management Studio ou SQL Server Management Studio Express, sélectionnez Nouvelle requête, collez le script dans la fenêtre, puis sélectionnez Exécuter. Une fois terminé, un message de requête exécuté s’affiche dans la barre d’état. Le volet Résultats contient également des messages relatifs aux index qui ont été reconstruits.

Exécutez l SQL élment.

Capture d’écran du journal réussi

Refuser les mises à jour non mises à jour

Refuser les mises à jour surutilisées dans le serveur WSUS pour aider les clients à analyser plus efficacement. Avant de refuser les mises à jour, assurez-vous que les mises à jour de la super-mise à jour sont déployées et que les mises à jour en place ne sont plus nécessaires. Configuration Manager inclut un nettoyage distinct, qui lui permet d’expirer les mises à jour en lieu et place en fonction des critères spécifiés. Pour plus d’informations, voir les articles suivants :

La requête SQL suivante peut être exécuté sur la base de données SUSDB, pour déterminer rapidement le nombre de mises à jour en trop. Si le nombre de mises à jour en sur-place est supérieur à 1 500, cela peut entraîner divers problèmes liés à la mise à jour logicielle côté serveur et côté client.

-- Find the number of superseded updates
Select COUNT(UpdateID) from vwMinimalUpdate where IsSuperseded=1 and Declined=0

Si vous utilisez configuration Manager version actuelle de la branche 1906 ou une version ultérieure, nous vous recommandons de refuser automatiquement les mises à jour en activant refuser les mises à jour expirées dans WSUS en fonction de l’option de règles de sur-place dans la configuration du point de mise à jour logicielle pour le site le plus haut.

Option Refuser les mises à jour expirées

Lorsque vous utilisez cette option, vous pouvez voir le nombre de mises à jour refusées en cisant le fichier WsyncMgr.log une fois le processus de synchronisation terminé. Si vous utilisez cette option, vous n’avez pas besoin d’utiliser le script décrit plus loin dans cette section (en l’exécutant manuellement ou en le mettant en place en tant que tâche pour l’exécuter selon une planification).

Si vous utilisez des serveurs WSUS autonomes ou une version antérieure de Configuration Manager, vous pouvez refuser manuellement les mises à jour modifiées à l’aide de la console WSUS. Vous pouvez également exécuter ce script PowerShell. Ensuite, copiez et enregistrez le script en tant que fichierDecline-SupersededUpdatesWithExclusionPeriod.ps1 script.

Notes

Ce script est fourni tel qu’il est. Il doit être entièrement testé dans un atelier avant de l’utiliser en production. Microsoft ne garantit en aucune façon l’utilisation de ce script. Exécutez toujours le script avec le paramètre en premier, pour obtenir un résumé du nombre de mises à jour qui seront -SkipDecline refusées.

Si Configuration Manager est définie sur Expirer immédiatement pour les mises à jour non mises à jour (voir ci-dessous), le script PowerShell peut être utilisé pour refuser toutes les mises à jour non utilisées. Elle doit être effectuée sur tous les serveurs WSUS autonomes dans la hiérarchie Configuration Manager/WSUS.

Option Expirer immédiatement

Vous n’avez pas besoin d’exécuter le script PowerShell sur les serveurs WSUS qui sont définies en tant que réplicas, tels que les SSP de site secondaire. Pour déterminer si un serveur WSUS est un réplica, vérifiez les paramètres de la source de mise à jour.

Capture d’écran de l’option Mettre à jour la source.

Si les mises à jour ne sont pas configurées pour être expirées immédiatement dans Configuration Manager, le script PowerShell doit être exécuté avec une période d’exclusion qui correspond au paramètre Configuration Manager pendant le nombre de jours avant l’expiration des mises à jour. Dans ce cas, il faut 60 jours pour que les propriétés du composant SUP soient configurées pour attendre deux mois avant l’expiration des mises à jour non mises à jour :

Capture d’écran des mois d’expiration des mises à jour non mises à jour

Les lignes de commande suivantes illustrent les différentes façons d’exécuter le script PowerShell (si le script est exécuté sur le serveur WSUS, peut être utilisé à la place du script LOCALHOST réel) SERVERNAME :

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –SkipDecline

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530 –ExclusionPeriod 60

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -Port 8530

Decline-SupersededUpdatesWithExclusionPeriod.ps1 -UpdateServer SERVERNAME -UseSSL -Port 8531

Exécution du script avec a et collecte d’informations sur les mises à jour sur le serveur WSUS et le nombre de mises à jour -SkipDecline -ExclusionPeriod 60 qui pourraient être refusées :

Windows PowerShell fenêtre exécutant SkipDecline et ExclusionPeriod 60.

Exécutez le script avec -ExclusionPeriod 60, pour refuser les mises à jour de plus de 60 jours :

Windows PowerShell avec ExclusionPeriod 60 en cours d’exécution.

Les indicateurs de sortie et de progression sont affichés pendant l’exécution du script. Notez leSupersededUpdates.csv, qui contient une liste de toutes les mises à jour refusées par le script :

Windows PowerShell de sortie et de progression.

Notes

Si des problèmes surviennent lors de la tentative d’utilisation du script PowerShell ci-dessus pour refuser les mises à jour non mises à jour, consultez la section Exécution du script Decline-SupersededUpdatesWithExclusionPeriod.ps1 qui arrive à son heure d’attente lors de la connexion au serveur WSUS, ou une erreur 401 se produit lors de l’exécution des étapes de dépannage.

Une fois que les mises à jour ont été refusées, pour de meilleures performances, SUSDB doit être réindexé à nouveau. Pour plus d’informations connexes, voir Réindexer la base de données WSUS.

Exécuter l’Assistant Nettoyage de WSUS Server

L’Assistant Nettoyage de WSUS Server fournit des options pour nettoyer les éléments suivants :

  • Mises à jour inutilisées et révisions de mise à jour (également appelées mises à jour obsolètes)
  • Ordinateurs ne contactant pas le serveur
  • Fichiers de mise à jour inutiles
  • Mises à jour expirées
  • Mises à jour non mises à jour

Dans un environnement Configuration Manager, les ordinateurs qui ne contactent pas le serveur et les options de fichiers de mise à jour inutiles ne sont pas pertinents, car Configuration Manager gère le contenu et les périphériques de mise à jour logicielle, sauf si les options Créer tous les événements de création de rapports WSUS ou Créer uniquement les événements de rapport d’état WSUS sont sélectionnées sous Software Update Sync Paramètres. Si l’une de ces options est configurée, vous devez envisager d’automatiser le nettoyage WSUS Server pour effectuer le nettoyage de ces deux options.

Si vous utilisez Configuration Manager version de la branche actuelle 1906 ou une version ultérieure, l’activation du refus des mises à jour expirées dans WSUS conformément à l’option de règles de sur-place gère le refus des mises à jour expirées et des mises à jour surutilisables en fonction des règles de surdessence spécifiées dans Configuration Manager. L’activation de l’option Supprimer les mises à jour obsolètes de l’option de base de données WSUS dans Configuration Manager version actuelle 1906 gère le nettoyage des mises à jour inutilisées et des révisions de mise à jour (mises à jour obsolètes). Il est recommandé d’activer ces options dans la configuration du point de mise à jour logicielle sur le site de niveau supérieur pour permettre à Configuration Manager de nettoyer la base de données WSUS.

Option Supprimer les mises à jour obsolètes

Si vous n’avez jamais nettoyé les mises à jour obsolètes de la base de données WSUS auparavant, cette tâche risque d’être dépassée. Vous pouvez consulter WsyncMgr.log pour plus d’informations et exécuter manuellement SQL script spécifié dans l’AIDE ! Mon WSUS est en cours d’exécution depuis des années sans que la maintenance soit effectuée et l’Assistant Nettoyage ne cesse de s’exécuter une seule fois, ce qui permet aux tentatives suivantes de Configuration Manager de s’exécuter correctement. Pour plus d’informations sur le nettoyage et la maintenance WSUS dans Configuration Manager, consultez la documentation.

Pour les serveurs WSUS autonomes, ou si vous utilisez une version antérieure de Configuration Manager, il est recommandé d’exécuter régulièrement l’Assistant Nettoyage WSUS. Si l’Assistant Nettoyage de WSUS Server n’a jamais été exécuté et que le serveur WSUS est en production depuis un certain temps, le nettoyage risque d’être plus long. Dans ce cas, réindexez d’abord les étapes 2 et 3, puis exécutez le nettoyage avec uniquement l’option Mises à jour inutilisées et révisions de mise à jour vérifiée.

Si vous n’avez jamais exécuté l’Assistant Nettoyage WSUS, l’exécution du nettoyage avec les mises à jour inutilisées et les révisions de mise à jour peut nécessiter quelques passes. S’il s’achève, exécutez-le à nouveau jusqu’à ce qu’il se termine, puis exécutez chacune des autres options une par une. Enfin, faites une passe complète avec toutes les options vérifiées. Si des délai d’SQL Server sont toujours présents, consultez l’alternative SQL Server’aide ! Mon WSUSest en cours d’exécution depuis des années sans que la maintenance ait été effectuée et l’Assistant nettoyage n’arrête pas de s’exécutant. L’exécution de l’Assistant Nettoyage du serveur peut prendre plusieurs heures ou jours SQL’exécution.

L’Assistant Nettoyage de WSUS Server s’exécute à partir de la console WSUS. Il se trouve sous Options, comme illustré ici :

Page d’emplacement de l’Assistant Nettoyage WSUS Server.

Pour plus d’informations, voir l’Assistant Nettoyage du serveur.

Page d’accueil de l’Assistant Nettoyage de WSUS Server.

Une fois qu’il a indiqué le nombre d’éléments qu’il a supprimés, le nettoyage se termine. Si vous ne voyez pas ces informations renvoyées sur votre serveur WSUS, vous pouvez supposer que le nettoyage a pris fin. Dans ce cas, vous devrez le recommencer ou utiliser l’SQL alternative.

Lorsque vous avez terminé, l’Assistant Nettoyage de WSUS Server.

Une fois que les mises à jour ont été refusées, pour de meilleures performances, SUSDB doit être réindexé à nouveau. Consultez la section Réindexer la base de données WSUS pour obtenir des informations connexes.

Résolution des problèmes

AIDE! Mon WSUS est en cours d’exécution depuis des années sans que la maintenance ait été effectuée et l’Assistant nettoyage n’arrête pas de s’exécutant !

Il existe deux options différentes ici :

  1. Réinstallez WSUS avec une base de données nouvelle. Il existe un certain nombre d’avertissements à ce sujet, y compris la longueur de la synchronisation initiale, et les analyses client complètes par rapport à SUSDB, par rapport aux analyses différentielle.

  2. Assurez-vous que vous avez une sauvegarde de la base de données SUSDB, puis exécutez une réindexation. Lorsque cela se termine, exécutez le script suivant dans SQL Server Management Studio ou SQL Server Management Studio Express. Une fois terminé, suivez toutes les instructions ci-dessus pour l’exécution de la maintenance. Cette dernière étape est nécessaire, car la procédure stockée supprime uniquement les mises à jour inutilisées et spDeleteUpdate les révisions de mise à jour.

Notes

Avant d’exécuter le script, suivez les étapes de la procédure stockée spDeleteUpdate qui s’exécute lentement pour améliorer les performances de l’exécution de spDeleteUpdate .

DECLARE @var1 INT
DECLARE @msg nvarchar(100)

CREATE TABLE #results (Col1 INT)
INSERT INTO #results(Col1) EXEC spGetObsoleteUpdatesToCleanup

DECLARE WC Cursor
FOR
SELECT Col1 FROM #results

OPEN WC
FETCH NEXT FROM WC
INTO @var1
WHILE (@@FETCH_STATUS > -1)
BEGIN SET @msg = 'Deleting' + CONVERT(varchar(10), @var1)
RAISERROR(@msg,0,1) WITH NOWAIT EXEC spDeleteUpdate @localUpdateID=@var1
FETCH NEXT FROM WC INTO @var1 END

CLOSE WC
DEALLOCATE WC

DROP TABLE #results

L’exécution du script Decline-SupersededUpdatesWithExclusionPeriod.ps1 arrive à son heure d’attente lors de la connexion au serveur WSUS, ou une erreur 401 se produit lors de l’exécution

Si des erreurs se produisent lorsque vous tentez d’utiliser le script PowerShell pour refuser les mises à jour SQL, un autre script de SQL peut être exécuté sur SUDB.

  1. Si Configuration Manager est utilisé avec WSUS, vérifiez les règles de > supersedence des propriétés des composants du point de mise à jour logicielle pour voir à quelle vitesse les mises à jour ont été utilisées, par exemple immédiatement ou après X mois. Notez ce paramètre.

    Capture d’écran des règles de surdence.

  2. Si vous n’avez pas backed up the SUSDB database,faites-le avant de poursuivre.

  3. Utilisez SQL Server Management Studio pour vous connecter à SUSDB.

  4. Exécutez la requête suivante. Le nombre 90 dans la ligne qui inclut doit correspondre aux règles de sur-edence de l’étape 1 de cette procédure, et au nombre correct de jours qui s’aligne sur le nombre de mois configuré dans les règles de DECLARE @thresholdDays INT = 90 surdence. Si cette valeur est définie pour expirer immédiatement, la valeur de la SQL requête doit @thresholdDays être définie sur zéro.

    -- Decline superseded updates in SUSDB; alternative to Decline-SupersededUpdatesWithExclusionPeriod.ps1
    DECLARE @thresholdDays INT = 90 -- Specify the number of days between today and the release date for which the superseded updates must not be declined (i.e., updates older than 90 days). This should match configuration of supersedence rules in SUP component properties, if ConfigMgr is being used with WSUS.
    DECLARE @testRun BIT = 0 -- Set this to 1 to test without declining anything.
    -- There shouldn't be any need to modify anything after this line.
    
    DECLARE @uid UNIQUEIDENTIFIER
    DECLARE @title NVARCHAR(500)
    DECLARE @date DATETIME
    DECLARE @userName NVARCHAR(100) = SYSTEM_USER
    
    DECLARE @count INT = 0
    
    DECLARE DU CURSOR FOR
      SELECT MU.UpdateID, U.DefaultTitle, U.CreationDate FROM vwMinimalUpdate MU
      JOIN PUBLIC_VIEWS.vUpdate U ON MU.UpdateID = U.UpdateId
    WHERE MU.IsSuperseded = 1 AND MU.Declined = 0 AND MU.IsLatestRevision = 1
      AND MU.CreationDate < DATEADD(dd,-@thresholdDays,GETDATE())
    ORDER BY MU.CreationDate
    
    PRINT 'Declining superseded updates older than ' + CONVERT(NVARCHAR(5), @thresholdDays) + ' days.' + CHAR(10)
    
    OPEN DU
    FETCH NEXT FROM DU INTO @uid, @title, @date
    WHILE (@@FETCH_STATUS > - 1)
    BEGIN
      SET @count = @count + 1
      PRINT 'Declining update ' + CONVERT(NVARCHAR(50), @uid) + ' (Creation Date ' + CONVERT(NVARCHAR(50), @date) + ') - ' + @title + ' ...'
      IF @testRun = 0
         EXEC spDeclineUpdate @updateID = @uid, @adminName = @userName, @failIfReplica = 1
      FETCH NEXT FROM DU INTO @uid, @title, @date
    END
    
    CLOSE DU
    DEALLOCATE DU
    
    PRINT CHAR(10) + 'Attempted to decline ' + CONVERT(NVARCHAR(10), @count) + ' updates.'
    
  5. Pour vérifier la progression, surveillez l’onglet Messages dans le volet Résultats.

Que se passe-t-il si j’ai besoin d’une des mises à jour que j’ai refusées ?

Si vous décidez que vous avez besoin de l’une de ces mises à jour refusées dans Configuration Manager, vous pouvez la récupérer dans WSUS en cliquant avec le bouton droit sur la mise à jour et en sélectionnant Approuver. Modifiez l’approbation sur Non approuvé, puis resyncez le SUP pour remettre la mise à jour.

Écran Approuver les mises à jour WSUS.

Si la mise à jour n’est plus dans WSUS, elle peut être importée à partir du catalogue Microsoft Update, si elle n’a pas expiré ou n’a pas été supprimée du catalogue.

Comment importer des mises à jour dans WSUS.

Automatisation de la maintenance WSUS

Notes

Si vous utilisez Configuration Manager version 1906 ou une version ultérieure, automatisez les procédures de nettoyage en activant les options de maintenance WSUS dans la configuration du point de mise à jour logicielle du site de niveau supérieur. Ces options gèrent toutes les opérations de nettoyage effectuées par l’Assistant Nettoyage de WSUS Server. Toutefois, vous devez toujours automatiquement la back up et réindexer la base de données WSUS en fonction d’une planification.

Les tâches de maintenance WSUS peuvent être automatisées, en supposant que quelques conditions sont remplies en premier.

  1. Si vous n’avez jamais exécuté de nettoyage WSUS, vous devez exécuter les deux premiers nettoyages manuellement. Votre deuxième nettoyage manuel doit être exécuté 30 jours à partir de votre premier, car il faut 30 jours pour que certaines mises à jour et les révisions de mise à jour prennent de l’âge. Il existe des raisons spécifiques pour lesquelles vous ne souhaitez pas automatiser avant votre deuxième nettoyage. Votre premier nettoyage s’exécutera probablement plus longtemps que la normale. Par conséquent, vous ne pouvez pas évaluer la durée normale de cette maintenance. Le deuxième nettoyage est un meilleur indicateur de ce qui est normal pour vos ordinateurs. Ceci est important, car vous devez déterminer la durée de chaque étape comme base (j’aime également ajouter une salle de 30 minutes environ) afin de pouvoir déterminer le calendrier.

  2. Si vous avez des serveurs WSUS en aval, vous devez d’abord effectuer des opérations de maintenance sur ces serveurs, puis effectuer les serveurs en amont.

  3. Pour planifier la réindexation de SUSDB, vous aurez besoin d’une version complète de SQL Server. Base de données interne Windows (WID) n’a pas la capacité de planifier une tâche de maintenance à l’SQL Server Management Studio Express. Cela dit, dans les cas où WID est utilisé, vous pouvez utiliser le Programmeur de tâches mentionné SQLCMD précédemment. Si vous allez sur cet itinéraire, il est important de ne pas synchroniser vos serveurs WSUS/SSP pendant cette période de maintenance ! Si vous le faites, il est possible que vos serveurs en aval terminent simplement par resyncing toutes les mises à jour que vous avez simplement essayé de nettoyer. J’ai prévu cette nuit avant ma synchronisation AM, donc j’ai le temps de l’vérifier avant l’application de la synchronisation.

Liens nécessaires/utiles :

Script de nettoyage WSUS

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")` 
 | out-null 
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer(); 
$cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope; 
$cleanupScope.DeclineSupersededUpdates = $true        
$cleanupScope.DeclineExpiredUpdates = $true 
$cleanupScope.CleanupObsoleteUpdates = $true 
$cleanupScope.CompressUpdates = $true 
#$cleanupScope.CleanupObsoleteComputers = $true 
$cleanupScope.CleanupUnneededContentFiles = $true 
$cleanupManager = $wsus.GetCleanupManager(); 
$cleanupManager.PerformCleanup($cleanupScope);

Configuration de la tâche de nettoyage WSUS dans le Programmeur des tâches

Notes

Comme mentionné précédemment, si vous utilisez Configuration Manager version actuelle de la branche 1906 ou une version ultérieure, automatisez les procédures de nettoyage en activant les options de maintenance WSUS dans la configuration du point de mise à jour logicielle du site de niveau supérieur. Pour les serveurs WSUS autonomes ou les versions antérieures de Configuration Manager, vous pouvez continuer à utiliser les étapes suivantes.

Le billet de blog Scripter du week-end mentionné dans la section précédente contient des instructions de base et des résolutions des problèmes pour cette étape. Toutefois, je vais vous suivre tout au long du processus dans les étapes suivantes.

  1. Ouvrez le Programmeur des tâches et sélectionnez Créer une tâche. Sous l’onglet Général, définissez le nom de la tâche, l’utilisateur que vous souhaitez exécuter le script PowerShell (la plupart des utilisateurs utilisent un compte de service). Sélectionnez Exécuter, qu’un utilisateur soit connecté ou non, puis ajoutez une description si vous le souhaitez.

    WSUS Créez un écran de tâche.

  2. Sous l’onglet Actions, ajoutez une nouvelle action et spécifiez le programme/script que vous souhaitez exécuter. Dans ce cas, nous devons utiliser PowerShell et le pointer vers le fichier PS1 que nous voulons qu’il s’exécute. Vous pouvez utiliser le script de nettoyage WSUS. Ce script effectue des options de nettoyage que la version de branche actuelle de Configuration Manager 1906 ne fait pas. Vous pouvez les déclasser si vous utilisez WSUS autonome ou une version antérieure de Configuration Manager. Si vous souhaitez un journal, vous pouvez modifier la dernière ligne du script comme suit :

    [reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null
    $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
    $cleanupScope = new-object Microsoft.UpdateServices.Administration.CleanupScope;
    # $cleanupScope.DeclineSupersededUpdates = $true # Performed by CM1906
    # $cleanupScope.DeclineExpiredUpdates    = $true # Performed by CM1906
    # $cleanupScope.CleanupObsoleteUpdates   = $true # Performed by CM1906
    $cleanupScope.CompressUpdates          = $true
    $cleanupScope.CleanupObsoleteComputers = $true
    $cleanupScope.CleanupUnneededContentFiles = $true
    $cleanupManager = $wsus.GetCleanupManager();
    $cleanupManager.PerformCleanup($cleanupScope) | Out-File C:\WSUS\WsusClean.txt;
    

    Vous recevrez un avertissement/FYI dans le Programmeur des tâches lorsque vous enregistrerez. Vous pouvez ignorer cet avertissement.

    WSUS ajoute une ligne de script pour démarrer la tâche.

  3. Sous l’onglet Déclencheurs, définissez votre planification pour une fois par mois ou selon la planification que vous souhaitez. Là encore, vous devez vous assurer que vous ne synchronisez pas votre WSUS pendant toute la durée de nettoyage et de réindexation.

    Définissez le déclencheur de modification WSUS pour la tâche.

  4. Définissez également d’autres conditions ou paramètres que vous souhaitez modifier. Lorsque vous enregistrez la tâche, vous pouvez être invité à obtenir les informations d’identification de l’utilisateur Exécuter en tant que.

  5. Vous pouvez également utiliser ces étapes pour configurer le script Decline-SupersededUpdatesWithExclusionPeriod.ps1 de manière à ce qu’il s’exécute tous les trois mois. En règle générale, je définisse ce script pour qu’il s’exécute avant les autres étapes de nettoyage, mais seulement après l’avoir exécuté manuellement et je me suis assuré qu’il s’est terminé correctement. J’exécute à 00:00 le premier dimanche tous les trois mois.

Configuration de la réindexation SUSDB pour WID à l’aide de SQLCMD et du Programmeur des tâches

  1. Enregistrez la réindexation du script de base de données WSUS en tant que fichier .sql (par exemple, SUSDBMaint.sql).

  2. Créez une tâche de base et nommez-la :

    Écran De l’Assistant Création de tâches de base WSUS.

  3. Planifier cette tâche pour qu’elle démarre environ 30 minutes après la fin de l’exécution de votre nettoyage. Mon nettoyage est en cours d’exécution à 01:00 tous les premiers dimanches. L’exécuter prend environ 30 minutes et je vais lui en donner 30 de plus avant de commencer ma réindexation. Cela signifie que je planifierais cette tâche pour chaque premier dimanche à 02:00, comme illustré ici :

    Définissez la fréquence de cette tâche dans l’Assistant Création de tâches de base.

  4. Sélectionnez l’action pour démarrer un programme. Dans la zone Programme/script, tapez la commande suivante. Le fichier spécifié après le paramètre est le chemin -i d’accès SQL script que vous avez enregistré à l’étape 1. Le fichier spécifié après le paramètre est l’endroit où vous -o souhaitez placer le journal. Voici un exemple :

    "C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.exe" -S \\.\pipe\Microsoft##WID\tsql\query -i C:\WSUS\SUSDBMaint.sql -o c:\WSUS\reindexout.txt

    Apparence du script dans l’Assistant Création de tâches de base.

  5. Vous recevrez un avertissement semblable à celui que vous avez reçu lors de la création de la tâche de nettoyage. Sélectionnez Oui pour accepter les arguments, puis sélectionnez Terminer pour appliquer :

    Fenêtre de confirmation du Programmeur de tâches.

  6. Vous pouvez tester le script en le forçant à s’exécuter et en réantant les erreurs dans le journal. Si vous avez des problèmes, le journal vous indiquera pourquoi. En règle générale, en cas d’échec, le compte exécutant la tâche n’a pas les autorisations appropriées ou le service WID n’est pas démarré.

Configuration d’une tâche de maintenance programmée de base dans SQL pour les bases de services de service non WID

Notes

Vous devez être un sysadmin dans SQL Server pour créer ou gérer des plans de maintenance.

  1. Ouvrez SQL Server Management Studio et connectez-vous à votre instance WSUS. Développez Gestion, cliquez avec le bouton droit sur Plans de maintenance, puis sélectionnez Nouveau plan de maintenance. Donnez un nom à votre plan.

    Tapez un nom pour votre plan de maintenance WSUS.

  2. Sélectionnez subplan1, puis assurez-vous que votre boîte à outils est en contexte :

    Assurez-vous que votre boîte à outils est en contexte.

  3. Faites glisser et déposez la tâche Exécuter L’instruction T-SQL tâche:

    Faites glisser et déposez la tâche Exécuter T-SQL Statement Task.

  4. Cliquez dessus avec le bouton droit et sélectionnez Modifier. Copiez et collez le script de réindexation WSUS, puis sélectionnez OK:

    Copier et coller le script de réindexation WSUS

  5. Planifier l’exécution de cette tâche environ 30 minutes après la fin de votre nettoyage. Mon nettoyage est en cours d’exécution à 01:00 tous les premiers dimanches. L’exécuter prend environ 30 minutes et je vais lui en donner 30 de plus avant de commencer la réindexation. Cela signifie que je planifierais cette tâche pour qu’elle s’exécute tous les premiers dimanches à 2 h 00.

    Écran Nouvelle planification des travaux WSUS.

  6. Lors de la création du plan de maintenance, envisagez également d’ajouter une sauvegarde du SUSDB au plan. En règle générale, je commence par la back up, puis je réindexe. Cela peut ajouter davantage de temps à la planification.

Tout mettre ensemble

Lors de son exécution dans une hiérarchie, l’exécution de nettoyage WSUS doit être effectuée à partir du bas de la hiérarchie vers le haut. Toutefois, lorsque vous utilisez le script pour refuser les mises à jour non mises à jour, l’exécuter doit être effectuée de haut en bas. Refuser les mises à jour en trop est en fait un type d’ajout à une mise à jour plutôt qu’une suppression. Vous ajoutez en fait un type d’approbation dans ce cas.

Étant donné qu’une synchronisation ne peut pas être effectuée pendant le nettoyage réel, il est suggéré de planifier/d’effectuer toutes les tâches de la nuit. Vérifiez ensuite leur achèvement via la journalisation le matin suivant, avant la prochaine synchronisation programmée. En cas d’échec, la maintenance peut être reprogrammée pour la nuit suivante, une fois que le problème sous-jacent est identifié et résolu.

Ces tâches peuvent s’exécuter plus rapidement ou plus lentement en fonction de l’environnement, et le minutage de la planification doit refléter cela. Nous espérons qu’elles sont plus rapides, car mon environnement de laboratoire tend à être un peu plus lent qu’un environnement de production normal. Je suis un peu agressif sur le minutage des scripts de refus. Si tier2 chevauche tier3 de quelques minutes, cela ne provoque pas de problème, car ma synchronisation n’est pas programmée pour s’exécuter.

Le fait de ne pas synchroniser les refus empêche le flux accidentel vers mes serveurs WSUS de réplica Tier3 à partir du niveau 2. Je me suis donné du temps supplémentaire entre le refus de niveau 3 et le nettoyage de niveau 3, car je souhaite absolument m’assurer que le script de refus se termine avant d’effectuer mon nettoyage.

Il s’agit d’une question courante : étant donné que je ne suis pas synchronisé, pourquoi ne dois-je pas exécuter tous les nettoyages et réindexations en même temps ?

La réponse est que vous le feriez probablement, mais ce n’est pas le cas. Si mon collègue dans le monde entier a besoin d’exécuter une synchronisation, avec cette planification, je réduise le risque de mises à jour orphelines dans WSUS. Et je peux planifier sa réexécution jusqu’à la fin de la nuit suivante.

Temps Niveau Tâches
00:00 Tier1 -Refuser
00:15 Tier2 -Refuser
00:30 Tier3 -Refuser
01:00 Nettoyage WSUS tier3
02:00 Réindexation de niveau 3 Nettoyage WSUS tier2
03:00 Tier1-Cleanup Réindexation de niveau 2
04:00 Réindexation de niveau 1

Notes

Si vous utilisez configuration Manager version actuelle de la branche 1906 ou une version ultérieure pour effectuer la maintenance WSUS, Configuration Manager effectue le nettoyage après la synchronisation à l’aide de l’approche de haut en bas. Dans ce scénario, vous pouvez planifier les travaux de sauvegarde et de réindexation de base de données WSUS à exécuter avant la planification de synchronisation configurée sans vous soucier des autres étapes, car Configuration Manager gère tout le reste.

Pour plus d’informations sur la maintenance SUP dans Configuration Manager, consultez les articles suivants :