Die vollständige Anleitung zur WSUS- und Configuration Manager-SUP-Wartung

In diesem Artikel werden einige allgemeine Fragen zur WSUS-Wartung für Configuration Manager-Umgebungen behandelt.

Ursprüngliche Produktversion:   Windows Server, Windows Server Update Services, Configuration Manager
Ursprüngliche KB-Nummer:   4490644

Einführung

Fragen sind häufig im Sinne der Vorgehensweise, wie diese Wartung in einer Configuration Manager-Umgebung ordnungsgemäß ausgeführt werden soll oder wie oft diese Wartung ausgeführt werden soll. Es ist nicht ungewöhnlich, dass sich die Administratoren von Configuration Manager bewusst sind, dass die WSUS-Wartung überhaupt ausgeführt werden sollte. Die meisten von uns richten nur WSUS-Server ein, da dies eine Voraussetzung für einen Softwareupdatepunkt (SOFTWARE Update Point, SUP) ist. Sobald die SUP eingerichtet ist, schließen wir die WSUS-Konsole und geben an, dass sie nicht vorhanden ist. Leider kann dies für Configuration Manager-Clients und die Gesamtleistung des WSUS/SUP-Servers problematisch sein.

Da Sie wissen, dass diese Wartung durchgeführt werden muss, fragen Sie sich, welche Wartung Sie durchführen müssen und wie oft Sie dies tun müssen. Die Antwort lautet, dass Sie eine monatliche Wartung durchführen sollten. Die Wartung ist einfach und dauert nicht lange für WSUS-Server, die von Anfang an gut gewartet wurden. Wenn die WSUS-Wartung jedoch einige Zeit in Anspruch nimmt, kann die Bereinigung beim ersten Mal schwieriger oder zeitaufwändig sein. In den folgenden Monaten wird es viel einfacher oder schneller sein.

Verwalten von WSUS bei gleichzeitiger Unterstützung der aktuellen Branch-Version 1906 und höher von Configuration Manager

Wenn Sie Configuration Manager current branch version 1906 oder höher verwenden, empfehlen wir, die WSUS-Wartungsoptionen in der Konfiguration des Softwareupdatepunkts am Standort auf oberster Ebene zu aktivieren, um die Bereinigungsverfahren nach jeder Synchronisierung zu automatisieren. Es würde alle in diesem Artikel beschriebenen Bereinigungsvorgänge effektiv verarbeiten, mit Ausnahme der Sicherung und Neuindizierung der WSUS-Datenbank. Sie sollten die Sicherung der WSUS-Datenbank zusammen mit der Neuindizierung der WSUS-Datenbank nach einem Zeitplan automatisieren.

Screenshot der WSUS-Wartungsoptionen im Fenster "Eigenschaften von Softwareupdatepunktkomponenten".

Weitere Informationen zur Wartung von Softwareupdates in Configuration Manager finden Sie unter Wartung von Softwareupdates.

Wichtige Überlegungen

Hinweis

Wenn Sie die Wartungsfeatures verwenden, die in Configuration Manager, Version 1906, hinzugefügt wurden,müssen Sie diese Elemente nicht berücksichtigen, da Configuration Manager die Bereinigung nach jeder Synchronisierung übernimmt.

  1. Bevor Sie mit dem Wartungsprozess beginnen, lesen Sie alle Informationen und Anweisungen in diesem Artikel.

  2. Wenn Sie WSUS zusammen mit downstream-Servern verwenden, werden WSUS-Server von oben nach unten hinzugefügt, sollten jedoch von unten nach oben entfernt werden. Beim Synchronisieren oder Hinzufügen von Updates wechseln sie zuerst zum Upstream-WSUS-Server und replizieren dann nach unten zu den Downstreamservern. Wenn Sie eine Bereinigung durchführen und Elemente von WSUS-Servern entfernen, sollten Sie am unteren Rand der Hierarchie beginnen.

  3. Die WSUS-Wartung kann gleichzeitig auf mehreren Servern auf derselben Ebene ausgeführt werden. Stellen Sie dabei sicher, dass eine Ebene abgeschlossen ist, bevor Sie zur nächsten wechseln. Die unten beschriebenen Bereinigungs- und Neuindizierungsschritte sollten auf allen WSUS-Servern ausgeführt werden, unabhängig davon, ob es sich um einen WSUS-Replikatserver handelt oder nicht. Weitere Informationen zum Ermitteln, ob ein WSUS-Server ein Replikat ist, finden Sie unter Ablehnen abgelöster Updates.

  4. Stellen Sie sicher, dass SUPs während des Wartungsprozesses nicht synchronisiert werden, da dies zu einem Verlust bereits erledigter Arbeit führen kann. Überprüfen Sie den SUP-Synchronisierungszeitplan, und legen Sie ihn während dieses Vorgangs vorübergehend auf manuell fest.

    Screenshot der Einstellung zum Aktivieren der Synchronisierung nach einem Zeitplan.

  5. Wenn Mehrere SUPs des primären Standorts oder der Primären Zentraladministration vorhanden sind, die die SUSDB nicht gemeinsam verwenden, sollten Sie den WSUS-Server, der mit der ersten SUP auf der Website synchronisiert wird, in einer Ebene unterhalb der Website befinden. Meine CAS-Website verfügt beispielsweise über zwei SUPs:

    • Die neue Synchronisierung mit Microsoft Update wäre meine oberste Ebene (Ebene1).
    • Der Server mit dem Namen 2012 wird mit "Neu" synchronisiert und würde in der zweiten Ebene berücksichtigt werden. Es kann zur gleichen Zeit bereinigt werden, in der ich alle meine anderen Tier2-Server ausführen würde, z. B. die einzelne SUP meines primären Standorts.

    Screenshot der beiden Beispiel-SUPs.

WSUS-Wartung durchführen

Zu den grundlegenden Schritten, die für eine ordnungsgemäße WSUS-Wartung erforderlich sind, gehören:

  1. Sichern der WSUS-Datenbank
  2. Erstellen benutzerdefinierter Indizes
  3. Erneutes Indizieren der WSUS-Datenbank
  4. Ablehnen abgelöster Updates
  5. Ausführen des WSUS-Serverbereinigungs-Assistenten

Sichern der WSUS-Datenbank

Sichern Sie die WSUS-Datenbank (SUSDB) mithilfe der gewünschten Methode. Weitere Informationen finden Sie unter Erstellen einer vollständigen Datenbanksicherung.

Erstellen benutzerdefinierter Indizes

Dieser Prozess ist optional, wird jedoch empfohlen, die Leistung bei nachfolgenden Bereinigungsvorgängen erheblich verbessert.

Wenn Sie Configuration Manager current Branch Version 1906 oder eine höhere Version verwenden, empfehlen wir, configuration Manager zum Erstellen der Indizes zu verwenden. Um die Indizes zu erstellen, konfigurieren Sie die Option zum Hinzufügen nicht gruppierter Indizes zur WSUS-Datenbankoption in der Konfiguration des Softwareupdatepunkts für die oberste Website.

Screenshot der Option "Nicht gruppierte Indizes zur WSUS-Datenbank hinzufügen" auf der Registerkarte "WSUS-Wartung".

Wenn Sie eine ältere Version von Configuration Manager oder eigenständige WSUS-Server verwenden, führen Sie die folgenden Schritte aus, um benutzerdefinierte Indizes in der SUSDB-Datenbank zu erstellen. Für jede SUSDB handelt es sich um einen einmaligen Prozess.

  1. Stellen Sie sicher, dass Sie über eine Sicherung der SUSDB-Datenbank verfügen.

  2. Verwenden Sie SQL Management Studio, um eine Verbindung mit der SUSDB-Datenbank herzustellen, auf die gleiche Weise wie im Abschnitt "Neuindizieren der WSUS-Datenbank" beschrieben.

  3. Führen Sie das folgende Skript für SUSDB aus, um zwei benutzerdefinierte Indizes zu erstellen:

    -- 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]
    

    Wenn zuvor benutzerdefinierte Indizes erstellt wurden, führt das erneute Ausführen des Skripts zu einem Fehler ähnlich dem folgenden:

    Msg 1913, Level 16, State 1, Line 4
    Der Vorgang ist fehlgeschlagen, da in der Tabelle "dbo.tbLocalizedPropertyForRevision" bereits ein Index oder eine Statistik mit dem Namen "nclLocalizedPropertyID" vorhanden ist.

Erneutes Indizieren der WSUS-Datenbank

Verwenden Sie zum Neuindizieren der WSUS-Datenbank (SUSDB) das Skript "WSUS-Datenbank-T-SQL".

Die Schritte zum Herstellen einer Verbindung mit SUSDB und zum Ausführen der Neuindizierung unterscheiden sich, je nachdem, ob SUSDB in SQL Server oder interne Windows-Datenbank (WID) ausgeführt wird. Um zu ermitteln, wo SUSDB ausgeführt wird, überprüfen Sie den Wert des SQLServerName Registrierungseintrags auf dem WSUS-Server, der sich am HKEY_LOCAL_MACHINE\Software\Microsoft\Update Services\Server\Setup Unterschlüssel befindet.

Wenn der Wert nur den Servernamen oder server\instance enthält, wird SUSDB auf einem SQL Server ausgeführt. Wenn der Wert die Zeichenfolge ##SSEE enthält oder darin enthalten ##WID ist, wird SUSDB in WID ausgeführt, wie gezeigt:

Screenshot von SqlServerName-SSEE.

Screenshot von SqlServerName-WID.

Wenn SUSDB auf WID installiert wurde

Wenn SUSDB auf WID installiert wurde, muss SQL Server Management Studio Express lokal installiert werden, um das Skript für die Neuindizierung auszuführen. Hier ist eine einfache Möglichkeit, um zu bestimmen, welche Version von SQL Server Management Studio Express installiert werden soll:

Nachdem Sie SQL Server Management Studio Express installiert haben, starten Sie es, und geben Sie den Servernamen ein, mit dem eine Verbindung hergestellt werden soll:

  • Wenn das Betriebssystem Windows Server 2012 oder höher ist, verwenden Sie \\.\pipe\MICROSOFT##WID\tsql\query .
  • Wenn das Betriebssystem älter als Windows Server 2012 ist, geben Sie \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query .

Wenn bei WID Fehler auftreten, die den folgenden ähneln, wenn Sie versuchen, eine Verbindung mit SUSDB über SQL Server Management Studio (SSMS) herzustellen, starten Sie SSMS mithilfe der Option "Als Administrator ausführen".

Screenshot des Fehlers "Keine Verbindung mit Server herstellen"

Wenn SUSDB auf SQL Server installiert wurde

Wenn SUSDB auf vollständigem SQL Server installiert wurde, starten Sie SQL Server Management Studio, und geben Sie bei Bedarf den Namen des Servers (und gegebenenfalls die Instanz) ein.

Tipp

Alternativ kann ein aufgerufenes Hilfsprogramm sqlcmd verwendet werden, um das Skript für die Neuindizierung auszuführen. Weitere Informationen finden Sie unter Neuindizieren der WSUS-Datenbank.

Ausführen des Skripts

Um das Skript in SQL Server Management Studio oder SQL Server Management Studio Express auszuführen, wählen Sie "Neue Abfrage" aus, fügen Sie das Skript in das Fenster ein, und wählen Sie dann "Ausführen" aus. Wenn sie abgeschlossen ist, wird eine erfolgreich ausgeführte Abfragenachricht in der Statusleiste angezeigt. Und der Bereich "Ergebnisse" enthält Nachrichten, die sich darauf beziehen, welche Indizes neu erstellt wurden.

Screenshot der Ausführung der SQL-Anweisung.

Screenshot des erfolgreichen Protokolls.

Ablehnen abgelöster Updates

Ablehnen abgelöster Updates auf dem WSUS-Server, damit Clients effizienter scannen können. Stellen Sie vor dem Ablehnen von Updates sicher, dass die abgelösten Updates bereitgestellt werden und dass abgelöste Updates nicht mehr benötigt werden. Configuration Manager enthält eine separate Bereinigung, mit der abgelöste Updates basierend auf angegebenen Kriterien ablaufen können. Weitere Informationen finden Sie in den folgenden Artikeln:

Die folgende SQL Abfrage kann für die SUSDB-Datenbank ausgeführt werden, um die Anzahl der abgelösten Updates schnell zu ermitteln. Wenn die Anzahl der abgelösten Updates höher als 1500 ist, kann dies zu verschiedenen Problemen im Zusammenhang mit Softwareupdates auf server- und clientseitiger Seite führen.

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

Wenn Sie Configuration Manager current branch Version 1906 oder eine höhere Version verwenden, empfehlen wir, dass Sie die abgelösten Updates automatisch ablehnen, indem Sie die Option "Abgelaufene Updates ablehnen" in WSUS gemäß der Option "Regeln zum Ersetzen" in der Konfiguration des Softwareupdatepunkts für die oberste Website aktivieren.

Screenshot der Option "Abgelaufene Updates in WSUS ablehnen" gemäß der Option "Regeln ersetzen" auf der Registerkarte "WSUS-Wartung".

Wenn Sie diese Option verwenden, können Sie sehen, wie viele Updates abgelehnt wurden, indem Sie die Datei WsyncMgr.log überprüfen, nachdem der Synchronisierungsprozess abgeschlossen ist. Wenn Sie diese Option verwenden, müssen Sie das weiter unten in diesem Abschnitt beschriebene Skript nicht verwenden (entweder durch manuelles Ausführen oder durch Einrichten einer Aufgabe, um es nach einem Zeitplan auszuführen).

Wenn Sie eigenständige WSUS-Server oder eine ältere Version von Configuration Manager verwenden, können Sie abgelöste Updates mithilfe der WSUS-Konsole manuell ablehnen. Sie können auch dieses PowerShell-Skriptausführen. Kopieren und speichern Sie das Skript dann als Decline-SupersededUpdatesWithExclusionPeriod.ps1 Skriptdatei.

Hinweis

Dieses Skript wird wie besehen bereitgestellt. Es sollte vollständig in einem Labor getestet werden, bevor Sie es in der Produktion verwenden. Microsoft übernimmt keinerlei Garantien hinsichtlich der Verwendung dieses Skripts. Führen Sie das Skript immer zuerst mit dem -SkipDecline Parameter aus, um eine Zusammenfassung zu erhalten, wie viele abgelöste Updates abgelehnt werden.

Wenn Configuration Manager auf das sofortige Ablaufen abgelöster Updates festgelegt ist (siehe unten), kann das PowerShell-Skript verwendet werden, um alle abgelösten Updates abzulehnen. Dies sollte auf allen autonomen WSUS-Servern in der Configuration Manager/WSUS-Hierarchie erfolgen.

Screenshot der Optionen für das sofortige Ablaufen abgelöster Updates auf der Registerkarte "Supersedence-Regeln".

Sie müssen das PowerShell-Skript nicht auf WSUS-Servern ausführen, die als Replikate festgelegt sind, z. B. sekundäre Website-SUPs. Um festzustellen, ob es sich bei einem WSUS-Server um ein Replikat handelt, überprüfen Sie die Einstellungen für die Updatequelle.

Screenshot der Option "Quell- und Proxyserver aktualisieren".

Wenn Updates in Configuration Manager nicht so konfiguriert sind, dass sie sofort abgelaufen sind, muss das PowerShell-Skript mit einem Ausschlusszeitraum ausgeführt werden, der der Configuration Manager-Einstellung für die Anzahl von Tagen entspricht, um abgelöste Updates abläuft. In diesem Fall sind es 60 Tage, da die EIGENSCHAFTEN von SUP-Komponenten so konfiguriert sind, dass sie zwei Monate warten, bevor abgelöste Updates ablaufen:

Screenshot der Monate, in denen abgelöste Updates ablaufen.

Die folgenden Befehlszeilen veranschaulichen die verschiedenen Möglichkeiten zum Ausführen des PowerShell-Skripts (wenn das Skript auf dem WSUS-Server ausgeführt wird, LOCALHOST kann anstelle des tatsächlichen verwendet SERVERNAME werden):

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

Ausführen des Skripts mit a -SkipDecline und Zum Sammeln von Informationen zu Updates auf dem -ExclusionPeriod 60 WSUS-Server und wie viele Updates abgelehnt werden könnten:

Screenshot des fensters Windows PowerShell, in dem SkipDecline und ExclusionPeriod 60 ausgeführt werden.

Ausführen des Skripts mit -ExclusionPeriod 60, um abgelöste Updates, die älter als 60 Tage sind, abzulehnen:

Screenshot des Windows PowerShell Fensters, in dem ExclusionPeriod 60 ausgeführt wird.

Die Ausgabe- und Statusanzeigen werden angezeigt, während das Skript ausgeführt wird. Beachten Sie die SupersededUpdates.csv Datei, die eine Liste aller Updates enthält, die vom Skript abgelehnt werden:

Screenshot der Windows PowerShell Ausgabe- und Statusanzeige.

Hinweis

Wenn Beim Versuch, das oben genannte PowerShell-Skript zum Ablehnen abgelöster Updates zu verwenden, Probleme auftreten, finden Sie im Abschnitt "Ausführen des Decline-SupersededUpdatesWithExclusionPeriod.ps1 Skripts beim Herstellen einer Verbindung mit dem WSUS-Server ein Zeitüberschreitung, oder es tritt ein 401-Fehler auf, während die Schritte zur Problembehandlung ausgeführt werden.

Nachdem abgelöste Updates abgelehnt wurden, sollte SUSDB aus Leistungsgründen erneut indiziert werden. Verwandte Informationen finden Sie unter Neuindizieren der WSUS-Datenbank.

Ausführen des WSUS-Serverbereinigungs-Assistenten

Der WSUS-Serverbereinigungs-Assistent bietet Optionen zum Bereinigen der folgenden Elemente:

  • Nicht verwendete Updates und Updaterevisionen (auch als veraltete Updates bezeichnet)
  • Computer, die den Server nicht kontaktieren
  • Nicht benötigte Updatedateien
  • Abgelaufene Updates
  • Abgelöste Updates

In einer Configuration Manager-Umgebung sind Computer, die keine Verbindung mit dem Server herstellen, und optionen für nicht benötigte Updatedateien nicht relevant, da Configuration Manager Inhalte und Geräte für Softwareupdates verwaltet, es sei denn, die Optionen "Alle WSUS-Berichterstellungsereignisse erstellen" oder "Nur WSUS-Statusberichterstellung erstellen" sind unter "Softwareupdatesynchronisierung" Einstellungen ausgewählt. Wenn Sie eine dieser Optionen konfiguriert haben, sollten Sie erwägen, die WSUS-Serverbereinigung zu automatisieren, um eine Bereinigung dieser beiden Optionen durchzuführen.

Wenn Sie Configuration Manager current Branch Version 1906 oder eine höhere Version verwenden, wird durch Aktivieren der Option "Abgelaufene Updates ablehnen" in WSUS gemäß der Option "Abgelöste Regeln" das Ablehnen von abgelaufenen und abgelösten Updates basierend auf den in Configuration Manager angegebenen Regeln für den Supersedence-Dienst behandelt. Durch Aktivieren der Option "Veraltete Updates aus der WSUS-Datenbank entfernen" in Configuration Manager current branch Version 1906 wird die Bereinigung von nicht verwendeten Updates und Updaterevisionen (veraltete Updates) ausgeführt. Es wird empfohlen, diese Optionen in der Konfiguration des Softwareupdatepunkts auf dem Standort auf oberster Ebene zu aktivieren, damit Configuration Manager die WSUS-Datenbank bereinigen kann.

Screenshot der Option "Veraltete Updates aus der WSUS-Datenbank entfernen".

Wenn Sie zuvor noch nie veraltete Updates aus der WSUS-Datenbank bereinigt haben, kann ein Timeout für diese Aufgabe auftreten. Sie können WsyncMgr.log für weitere Informationen überprüfen und das in DER HILFE angegebene SQL Skript manuell ausführen! Mein WSUS wird seit Jahren ohne Wartung ausgeführt, und der Bereinigungs-Assistent hält das Timing einmal aus, wodurch nachfolgende Versuche von Configuration Manager erfolgreich ausgeführt werden können. Weitere Informationen zur WSUS-Bereinigung und -Wartung in Configuration Manager finden Sie in den Dokumenten.

Für eigenständige WSUS-Server oder wenn Sie eine ältere Version von Configuration Manager verwenden, wird empfohlen, den WSUS-Bereinigungs-Assistenten regelmäßig auszuführen. Wenn der WSUS-Serverbereinigungs-Assistent noch nie ausgeführt wurde und WSUS eine Weile in der Produktion war, kann die Bereinigung ein Timeout aufweisen. Führen Sie in diesem Fall zuerst eine Neuindizierung mit Schritt 2 und Schritt 3 aus, und führen Sie dann die Bereinigung aus, wobei nur die Option "Nicht verwendete Updates und Aktualisierungsrevisionen" aktiviert ist.

Wenn Sie den WSUS-Bereinigungs-Assistenten noch nie ausgeführt haben, kann das Ausführen der Bereinigung mit nicht verwendeten Updates und Updaterevisionen einige Durchläufe erfordern. Wenn ein Timeout auftritt, führen Sie es erneut aus, bis es abgeschlossen ist, und führen Sie dann jede der anderen Optionen nacheinander aus. Führen Sie abschließend einen vollständigen Durchlauf durch, wobei alle Optionen aktiviert sind. Wenn weiterhin Timeouts auftreten, sehen Sie sich die SQL Server Alternative in DER HILFE an! Mein WSUS wird seit Jahren ohne Wartung ausgeführt, und der Bereinigungs-Assistent hält das Timing aus. Es kann mehrere Stunden oder Tage dauern, bis der Serverbereinigungs-Assistent oder SQL Alternative bis zum Abschluss ausgeführt wird.

Der WSUS-Serverbereinigungs-Assistent wird über die WSUS-Konsole ausgeführt. Es befindet sich unter "Optionen", wie hier gezeigt:

Screenshot der Speicherortseite des WSUS-Serverbereinigungs-Assistenten.

Weitere Informationen finden Sie unter Verwenden des Serverbereinigungs-Assistenten.

Screenshot der Startseite des WSUS-Serverbereinigungs-Assistenten.

Nachdem die Anzahl der entfernten Elemente gemeldet wurde, wird die Bereinigung abgeschlossen. Wenn diese Informationen auf dem WSUS-Server nicht zurückgegeben werden, kann davon ausgegangen werden, dass bei der Bereinigung ein Timeout aufgetreten ist. In diesem Fall müssen Sie es erneut starten oder die SQL Alternativeverwenden.

Screenshot des WSUS-Serverbereinigungs-Assistenten nach Abschluss.

Nachdem abgelöste Updates abgelehnt wurden, sollte SUSDB aus Leistungsgründen erneut indiziert werden. Weitere Informationen finden Sie im Abschnitt "Neuindizieren der WSUS-Datenbank".

Problembehandlung

HILFE! Mein WSUS wird seit Jahren ohne Wartung ausgeführt, und der Bereinigungs-Assistent hält das Timing aus!

Hier gibt es zwei verschiedene Optionen:

  1. Installieren Sie WSUS mit einer neuen Datenbank neu. In diesem Zusammenhang gibt es eine Reihe von Einschränkungen, einschließlich der Länge der ersten Synchronisierung und vollständiger Clientscans mit SUSDB im Vergleich zu differenziellen Scans.

  2. Stellen Sie sicher, dass Sie über eine Sicherung der SUSDB-Datenbank verfügen, und führen Sie dann eine Neuindizierungaus. Führen Sie nach Abschluss dieses Vorgangs das folgende Skript in SQL Server Management Studio oder SQL Server Management Studio Express aus. Befolgen Sie nach Abschluss des Vorgangs alle oben genannten Anweisungen für die Ausführung der Wartung. Dieser letzte Schritt ist erforderlich, da die spDeleteUpdate gespeicherte Prozedur nur nicht verwendete Updates und Updaterevisionen entfernt.

Hinweis

Führen Sie vor dem Ausführen des Skripts die Schritte in der gespeicherten Prozedur "spDeleteUpdate" langsam aus, um die Leistung der Ausführung von spDeleteUpdate zu verbessern.

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

Beim Ausführen des Decline-SupersededUpdatesWithExclusionPeriod.ps1 Skripts tritt beim Herstellen einer Verbindung mit dem WSUS-Server ein Zeitüberschreitung auf, oder während der Ausführung tritt ein 401-Fehler auf.

Wenn Fehler auftreten, wenn Sie versuchen, das PowerShell-Skript zu verwenden, um abgelöste Updates abzulehnen, kann ein alternatives SQL Skript für CSVB ausgeführt werden.

  1. Wenn Configuration Manager zusammen mit WSUS verwendet wird, überprüfen Sie die Eigenschaften von Eigenschaften von Softwareupdatepunktkomponenten, > um zu sehen, wie schnell abgelöste Updates ablaufen, z. B. unmittelbar oder nach X Monaten. Notieren Sie sich diese Einstellung.

    Screenshot der Supersedence-Regeln.

  2. Wenn Sie die SUSDB-Datenbanknicht gesichert haben, führen Sie dies aus, bevor Sie fortfahren.

  3. Verwenden Sie SQL Server Management Studio, um eine Verbindung mit SUSDB herzustellen.

  4. Führen Sie die folgende Abfrage aus. Die Zahl 90 in der Zeile, die enthalten DECLARE @thresholdDays INT = 90 ist, sollte den Supersedence-Regeln aus Schritt 1 dieses Verfahrens entsprechen, und die richtige Anzahl von Tagen, die der Anzahl der Monate entspricht, die in den Supersedence-Regeln konfiguriert sind. Wenn festgelegt ist, dass dies sofort abläuft, sollte der Wert in der SQL Abfrage @thresholdDays auf Null festgelegt werden.

    -- 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. Um den Status zu überprüfen, überwachen Sie die Registerkarte "Nachrichten" im Bereich "Ergebnisse".

Was geschieht, wenn ich eines der Updates benötige, die ich abgelehnt habe?

Wenn Sie eines dieser abgelehnten Updates in Configuration Manager benötigen, können Sie es in WSUS zurückgeben, indem Sie mit der rechten Maustaste auf das Update klicken und "Genehmigen" auswählen. Ändern Sie die Genehmigung in "Nicht genehmigt", undsyncieren Sie die SUP erneut, um das Update wieder einzugeben.

Screenshot des Bildschirms &quot;Updates genehmigen&quot; von WSUS.

Wenn das Update nicht mehr in WSUS enthalten ist, kann es aus dem Microsoft Update-Katalog importiert werden, wenn es nicht abgelaufen oder aus dem Katalog entfernt wurde.

Screenshot zeigt, wie Updates in WSUS importiert werden.

Automatisieren der WSUS-Wartung

Hinweis

Wenn Sie Configuration Manager Version 1906 oder eine höhere Version verwenden, automatisieren Sie die Bereinigungsverfahren, indem Sie die WSUS-Wartungsoptionen in der Konfiguration des Softwareupdatepunkts der Website auf oberster Ebene aktivieren. Diese Optionen behandeln alle Bereinigungsvorgänge, die vom WSUS-Serverbereinigungs-Assistenten ausgeführt werden. Sie sollten die WSUS-Datenbank jedoch weiterhin automatisch sichern und nach einem Zeitplan neu indizieren.

WSUS-Wartungsaufgaben können automatisiert werden, vorausgesetzt, dass zunächst einige Anforderungen erfüllt sind.

  1. Wenn Sie die WSUS-Bereinigung noch nie ausgeführt haben, müssen Sie die ersten beiden Bereinigungen manuell durchführen. Die zweite manuelle Bereinigung sollte 30 Tage nach ihrer ersten ausgeführt werden, da es 30 Tage dauert, bis einige Updates und Updaterevisionen veraltet sind. Es gibt bestimmte Gründe dafür, warum Sie erst nach der zweiten Bereinigung automatisieren möchten. Ihre erste Bereinigung wird wahrscheinlich länger als normal ausgeführt. Sie können also nicht beurteilen, wie lange diese Wartung normalerweise dauert. Die zweite Bereinigung ist ein viel besserer Indikator dafür, was für Ihre Computer normal ist. Dies ist wichtig, da Sie herausfinden müssen, wie lange jeder Schritt als Basislinie dauert (ich möchte auch etwa 30 Minuten Umschaltraum hinzufügen), damit Sie den Zeitplan für Ihren Zeitplan bestimmen können.

  2. Wenn Sie über nachgeschaltete WSUS-Server verfügen, müssen Sie zuerst Wartungen daran durchführen und dann die Upstreamserver ausführen.

  3. Um die Neuindizierung der SUSDB zu planen, benötigen Sie eine Vollversion von SQL Server. interne Windows-Datenbank (WID) verfügt nicht über die Möglichkeit, eine Wartungsaufgabe über SQL Server Management Studio Express zu planen. In Fällen, in denen WID verwendet wird, können Sie den Vorgangsplaner verwenden, der SQLCMD bereits erwähnt wurde. Wenn Sie diese Route verwenden, ist es wichtig, dass Sie Ihre WSUS-Server/SUPs während dieses Wartungszeitraums nicht synchronisieren! In diesem Fall ist es möglich, dass Ihre downstream-Server alle Updates, die Sie soeben bereinigt haben, neu synchronisiert werden. Ich plane dies über Nacht vor meiner AM-Synchronisierung, sodass ich Zeit habe, dies zu überprüfen, bevor meine Synchronisierung ausgeführt wird.

Erforderliche/hilfreiche Links:

WSUS-Bereinigungsskript

[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);

Einrichten des WSUS-Bereinigungsvorgangs im Aufgabenplaner

Hinweis

Wie bereits erwähnt, automatisieren Sie bei Verwendung der aktuellen Branch-Version 1906 oder einer neueren Version von Configuration Manager die Bereinigungsverfahren, indem Sie die WSUS-Wartungsoptionen in der Konfiguration des Softwareupdatepunkts des Standorts auf oberster Ebene aktivieren. Für eigenständige WSUS-Server oder ältere Versionen von Configuration Manager können Sie weiterhin die folgenden Schritte ausführen.

Der im vorherigen Abschnitt erwähnte Blogbeitrag "Weekend Scripter" enthält grundlegende Anweisungen und Problembehandlung für diesen Schritt. Ich werde Sie jedoch in den folgenden Schritten durch den Prozess führen.

  1. Öffnen Sie den Aufgabenplaner, und wählen Sie "Aufgabe erstellen" aus. Legen Sie auf der Registerkarte "Allgemein" den Namen der Aufgabe fest, also den Benutzer, den Sie das PowerShell-Skript ausführen möchten (die meisten Benutzer verwenden ein Dienstkonto). Wählen Sie "Ausführen" aus, ob ein Benutzer angemeldet ist oder nicht, und fügen Sie auf Wunsch eine Beschreibung hinzu.

    Screenshot des Bildschirms &quot;WSUS Erstellen einer Aufgabe&quot;.

  2. Fügen Sie auf der Registerkarte Aktionen eine neue Aktion hinzu, und geben Sie das auszuführende Programm/Skript an. In diesem Fall müssen wir PowerShell verwenden und auf die PS1-Datei verweisen, die ausgeführt werden soll. Sie können das WSUS-Bereinigungsskriptverwenden. Dieses Skript führt Bereinigungsoptionen durch, die Configuration Manager für die aktuelle Branch-Version 1906 nicht ausführt. Sie können die Kommentare entfernen, wenn Sie eigenständige WSUS oder eine ältere Version von Configuration Manager verwenden. Wenn Sie ein Protokoll wünschen, können Sie die letzte Zeile des Skripts wie folgt ändern:

    [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;
    

    Beim Speichern erhalten Sie eine FYI/Warnung im Aufgabenplaner. Sie können diese Warnung ignorieren.

    Screenshot: WSUS fügt eine Skriptzeile hinzu, um die Aufgabe zu starten.

  3. Legen Sie ihren Zeitplan auf der Registerkarte "Triggers" einmal im Monat oder nach einem beliebigen Zeitplan fest. Auch hier müssen Sie sicherstellen, dass Sie WSUS nicht während der gesamten Bereinigungs- und Neuindizierungszeit synchronisieren.

    Screenshot: Festlegen des WSUS-Bearbeitungsauslösers für die Aufgabe.

  4. Legen Sie auch andere Bedingungen oder Einstellungen fest, die Sie optimieren möchten. Wenn Sie die Aufgabe speichern, werden Sie möglicherweise zur Eingabe der Anmeldeinformationen des Benutzers "Als Ausführen" aufgefordert.

  5. Sie können diese Schritte auch verwenden, um das skriptDecline-SupersededUpdatesWithExclusionPeriod.ps1 so zu konfigurieren, dass es alle drei Monate ausgeführt wird. Ich setiere dieses Skript in der Regel so, dass es vor den anderen Bereinigungsschritten ausgeführt wird, aber erst, nachdem ich es manuell ausgeführt und sichergestellt habe, dass es erfolgreich abgeschlossen wurde. Ich laufe am ersten Sonntag alle drei Monate um 12:00 Uhr.

Einrichten der SUSDB-Neuindizierung für WID mit SQLCMD und Task Scheduler

  1. Speichern Sie die Neuindizierung des WSUS-Datenbankskripts als SQL-Datei (z. B. SUSDBMaint.sql).

  2. Erstellen Sie eine einfache Aufgabe, und geben Sie ihr einen Namen:

    Screenshot des Bildschirms des WSUS-Assistenten zum Erstellen grundlegender Aufgaben.

  3. Planen Sie, dass diese Aufgabe etwa 30 Minuten beginnt, nachdem Sie erwartet haben, dass die Bereinigung abgeschlossen ist. Meine Bereinigung wird jeden ersten Sonntag um 1:00 Uhr ausgeführt. Die Ausführung dauert ca. 30 Minuten, und ich werde ihr weitere 30 Minuten geben, bevor ich mit der Neuindizierung beginne. Dies bedeutet, dass ich diese Aufgabe für jeden ersten Sonntag um 2:00 Uhr planen würde, wie hier gezeigt:

    Screenshot: Festlegen der Häufigkeit für diese Aufgabe im Assistenten zum Erstellen grundlegender Aufgaben.

  4. Wählen Sie die Aktion aus, um ein Programm zu starten. Geben Sie im Feld "Programm/Skript" den folgenden Befehl ein. Die nach dem Parameter angegebene Datei ist der Pfad zum SQL Skript, das -i Sie in Schritt 1 gespeichert haben. Die nach dem Parameter angegebene Datei ist die -o Stelle, an der das Protokoll abgelegt werden soll. Hier ist ein Beispiel:

    "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

    Der Screenshot zeigt, wie das Skript im Assistenten zum Erstellen von einfachen Aufgaben aussehen sollte.

  5. Sie erhalten eine Warnung, ähnlich der Warnung, die Sie beim Erstellen der Bereinigungsaufgabe erhalten haben. Wählen Sie "Ja" aus, um die Argumente zu akzeptieren, und wählen Sie dann "Fertig stellen" aus, um sie anzuwenden:

    Screenshot des Popupfensters zur Bestätigung des Aufgabenplaners.

  6. Sie können das Skript testen, indem Sie die Ausführung erzwingen und das Protokoll auf Fehler überprüfen. Wenn Probleme auftreten, erfahren Sie im Protokoll, warum. In der Regel verfügt das Konto, mit dem die Aufgabe ausgeführt wird, nicht über die entsprechenden Berechtigungen, oder der WID-Dienst wird nicht gestartet.

Einrichten einer einfachen geplanten Wartungsaufgabe in SQL für Nicht-WID-SUSDBs

Hinweis

Sie müssen ein Sysadmin in SQL Server sein, um Wartungspläne zu erstellen oder zu verwalten.

  1. Öffnen Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit Ihrer WSUS-Instanz her. Erweitern Sie "Verwaltung", klicken Sie mit der rechten Maustaste auf "Wartungspläne", und wählen Sie dann "Neuer Wartungsplan" aus. Geben Sie Ihrem Plan einen Namen.

    Screenshot des eingegebenen Namens für Ihren WSUS-Wartungsplan.

  2. Wählen Sie Unterplan1 aus, und stellen Sie dann sicher, dass sich Ihre Toolbox im Kontext befindet:

    Screenshot, um sicherzustellen, dass sich Ihre Toolbox im Kontext befindet.

  3. Drag and drop the task Execute T-SQL Statement Task:

    Screenshot der Option &quot;T-SQL Anweisungsaufgabe ausführen&quot;.

  4. Klicken Sie mit der rechten Maustaste darauf, und wählen Sie "Bearbeiten" aus. Kopieren Sie das WSUS-Skript, fügen Sie es neu ein, und wählen Sie dann OK aus:

    Screenshot zum Kopieren und Einfügen des WSUS-Skripts für die Neuindizierung.

  5. Planen Sie die Ausführung dieser Aufgabe etwa 30 Minuten, nachdem Sie erwartet haben, dass die Bereinigung abgeschlossen ist. Meine Bereinigung wird jeden ersten Sonntag um 1:00 Uhr ausgeführt. Die Ausführung dauert ca. 30 Minuten, und ich werde ihr weitere 30 Minuten geben, bevor ich mit der Neuindizierung beginne. Das bedeutet, dass ich diese Aufgabe jeden ersten Sonntag um 2:00 Uhr ausführen würde.

    Screenshot des Bildschirms &quot;Neuer Auftragszeitplan für WSUS&quot;.

  6. Beim Erstellen des Wartungsplans sollten Sie auch eine Sicherung der SUSDB in den Plan einfügen. I usually back up first, then reindex. Möglicherweise wird dem Zeitplan mehr Zeit hinzugefügt.

Zusammenfassung

Wenn sie in einer Hierarchie ausgeführt wird, sollte die WSUS-Bereinigung von unten in der Hierarchie nach oben ausgeführt werden. Wenn Sie das Skript jedoch verwenden, um abgelöste Updates abzulehnen, sollte die Ausführung von oben nach unten erfolgen. Das Ablehnen abgelöster Updates ist eigentlich eine Art Ergänzung zu einem Update und nicht zum Entfernen. In diesem Fall fügen Sie tatsächlich eine Art von Genehmigung hinzu.

Da eine Synchronisierung während der tatsächlichen Bereinigung nicht durchgeführt werden kann, wird empfohlen, alle Aufgaben über Nacht zu planen/abzuschließen. Überprüfen Sie dann ihren Abschluss über die Protokollierung am folgenden Morgen, vor der nächsten geplanten Synchronisierung. Wenn ein Fehler aufgetreten ist, kann die Wartung für die nächste Nacht neu geplant werden, sobald das zugrunde liegende Problem identifiziert und behoben wurde.

Diese Aufgaben können je nach Umgebung schneller oder langsamer ausgeführt werden, und der Zeitplan sollte dies widerspiegeln. Sie sind hoffentlich schneller, da meine Laborumgebung in der Regel etwas langsamer als eine normale Produktionsumgebung ist. Ich bin ein wenig offensiv hinsichtlich des Zeitpunkts der Ablehnungsskripts. Wenn Tier2 Ebene3 um ein paar Minuten überlappt, verursacht dies kein Problem, da die Ausführung meiner Synchronisierung nicht geplant ist.

Durch nicht Synchronisierung werden die Ablehnungen verhindert, dass versehentlich von Ebene2 in mein Tier3-Replikat WSUS-Server fließt. Ich habe mir zusätzliche Zeit zwischen der Stufen-3-Ablehnung und der Tier3-Bereinigung gegeben, da ich auf jeden Fall sicherstellen möchte, dass das Ablehnungsskript abgeschlossen ist, bevor ich meine Bereinigung ausführt.

Es stellt sich eine häufige Frage: Warum sollte ich nicht alle Bereinigungen ausführen und die Bereinigungen gleichzeitig neu indizieren, da ich nicht synchronisiert werde?

Die Antwort ist, dass Sie dies wahrscheinlich tun könnten, aber ich würde dies nicht tun. Wenn meine Kollegen auf der ganzen Welt eine Synchronisierung ausführen müssen, würde ich mit diesem Zeitplan das Risiko verwaister Updates in WSUS minimieren. Und ich kann es so planen, dass es in der nächsten Nacht erneut ausgeführt wird.

Zeit Tier Aufgaben
12:00 Uhr Stufe1:Ablehnen
12:15 Uhr Stufe2–Ablehnen
12:30 Uhr Stufe 3–Ablehnen
1:00 Uhr Tier3-WSUS-Bereinigung
02:00 Uhr Tier3-Neuindex WSUS-Bereinigung auf Ebene2
3:00 Uhr Tier1-Cleanup Tier2-Neuindex
04:00 Uhr Tier1-Neuindex

Hinweis

Wenn Sie Configuration Manager current Branch Version 1906 oder eine höhere Version verwenden, um die WSUS-Wartung durchzuführen, führt Configuration Manager die Bereinigung nach der Synchronisierung mithilfe des Top-Down-Ansatzes durch. In diesem Szenario können Sie die Ausführung der WSUS-Datenbanksicherungs- und Neuindizierungsaufträge vor dem konfigurierten Synchronisierungszeitplan planen, ohne sich Gedanken über die anderen Schritte machen zu müssen, da Configuration Manager alles andere übernimmt.

Weitere Informationen zur SUP-Wartung in Configuration Manager finden Sie in den folgenden Artikeln: