Dieser Artikel erschien zuerst auf Bents Blog.
Es ist bereits eine ganze Weile her, dass ich meinen Beitrag für die automatische WSUS-Serverbereinigung mit Tasks und Skripten veröffentlicht habe. Inzwischen haben wir unseren eigenen internen Windows Server Update Service (WSUS) von Windows Server 2003 auf einen Windows Server 2012 migriert. Die dafür nötigen Schritte möchte ich an dieser Stelle dokumentieren und dabei ebenfalls auf die Änderungen bzw. Anpassungen in meinen WSUS-Cleanup Skripten eingehen.
Die Installation unter Windows Server 2012 bietet zwar einige kleine Unterschiede, kann aber so auch unter Windows Server 2008 R2 durchgeführt werden – die Version des WSUS ist nämlich nach wie vor 3.0 Service Pack 2.
Voraussetzungen
Neben dem Betriebssystem und der Wahl, ob der Server physisch oder als virtuelle Maschine betrieben werden soll, benötigt man genügend Speicherplatz für die Bereitstellung der Windows Updates in der eigenen Umgebung. Dieser Speicherplatz hängt von der
- Anzahl der verschiedenen Sprachen,
- der Anzahl unterschiedlicher eingesetzter Anwendungen und Betriebssystemen (Server und Clients) und
- der später definierten Klassifizierungen ab.
Der WSUS benötigt für die Speicherung der eine Microsoft SQL Server Datenbank. Wer bereits einen SQL Server in seiner eigenen Umgebung betreibt, kann während der Installation des WSUS selbigen als Datenbankserver auswählen – oder aber die Windows Interne Datenbank installieren.
Wer die grafische Verwaltungskonsole SQL Management Studio für die interne Datenbank einsetzen möchte, kann bei der Auswahl der zu installierenden Rollen im Server-Manager gleich das Feature .Net Framework 3.5 auswählen und mitinstallieren.
Installation
Die Installation der Windows Server Updates Services (WSUS) geschieht über den Server-Manager als Rolle. Dabei wird automatisch die benötigte Webserver (IIS) Rolle mitinstalliert. Wer keinen SQL Server einsetzt, sollte die WID Database mitinstallieren:
Während der Installation des WSUS fragt dieser nach dem Ort an dem die Windows Updates zukünftig gespeichert werden sollen. Es ist sinnvoll, dafür ein eigenes Volume zu bereitzustellen und die Updates nicht auf dem Systemvolume abzulegen.
Während unter Windows Server 2008 R2 die Dateien der internen Datenbank SUSDB in einem Unterordner neben den Windows Updates liegen (UpdateServiceDBFiles), befinden sich die Datendateien bei Windows Server 2012 unter C:\Windows\WID\Data.
Im Unterschied zu Windows Server 2008 R2 benutzt der WSUS im IIS nicht wie üblich Port 80 sondern bei Windows Server 2012 nun Port 8530 – wie auch beim Small Business Server.
Die Änderung der Ports ist für die Gruppenrichtlinien interessant, über die der WSUS innerhalb der Domäne bekannt gemacht wird. So muss eine bestehende Richtlinie Internen Pfad für den Microsoft Updatedienst angeben unter dem Pfad Computerkonfiguration, Richtlinien, Administrative Vorlagen, Windows-Komponenten, Windows Update wie folgt aktualisiert werden:
Danach kommunizieren die Clients erst korrekt mit dem neuen WSUS, die neuen Ports werden automatisch als eingehende Regeln in der Firewall des Windows Server 2012 hinzugefügt.
Windows Internal Database
Bei Windows Server 2008 R2 befindet sich der Installationsordner unter dem Pfad:
C:\Windows\SYSMSI\SSEE\MSSQL.2005\MSSQL\
Wie unschwer zu erkennen ist, verbirgt sich eine speziell angepasste SQL Server 2005 Express Edition hinter dieser Version. Der Dienst-Anzeigename lautet Windows Internal Database (MICROSOFT##SSEE) und intern MSSQL$MICROSOFT##SSEE. Der Servername für die Anmeldung im SQL Management Studio lautet:
\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query
Für die grafische Verwaltung empfehle ich das SQL Management Studio 2008 Express. Zusätzlich benötigt man für die Ausführung der WSUS-Cleanup-Skripte das SQL Commandline Utlility SqlCmdLnUtils.msi aus dem Microsoft SQL Server 2008 SP3 Feature Pack.
Bei Windows Server 2012 befindet sich der Installationsordner unter dem Pfad:
C:\Windows\WID\
Hier verbirgt sich hinter der Datenbank ein angepasster SQL Server 2012 (Version 110). Der Dienst-Anzeigename lautet Interne Windows-Datenbank und intern MSSQL$MICROSOFT##WID. Der Servername für die Anmeldung im SQL Management Studio lautet:
np:\\.\pipe\MICROSOFT##WID\tsql\query
Für die grafische Verwaltung benötigt man das SQL Management Studio für SQL Server 2012 Express. Weiterhin benötigt man für die Ausführung der WSUS-Cleanup-Skripte das SQL Commandline Utlility SqlCmdLnUtils.msi aus dem Microsoft SQL Server 2012 SP1 Feature Pack.
Automatische Bereinigung der Datenbank
Wie schon in meinem früheren Beitrag, kommen wieder meine Skripte aus dem Package WSUS-Cleanup.zip zum Einsatz. Der ZIP-Container enthält die folgenden drei Dateien, die in einen beliebigen Ordner auf den Server kopiert werden können – in meinem Beispiel nach D:\WSUS:
D:\WSUS\WSUS-Serverbereinigung.cmd
D:\WSUS\WSUS-Serverbereinigung.ps1
D:\WSUS\WsusDBMaintenance.sql
Wurde das Paket mit Hilfe des Internet-Explorers heruntergeladen, sollte zunächst die Powershell-Datei WSUS-Serverbereinigung.ps1 im Bezug auf die vom Internet Explorer hinterlegte Download-Quelle zugelassen werden. Dafür lässt man sich einmalig die Eigenschaften der Datei anzeigen und bestätigt im Abschnitt Sicherheit mit dem Button Zulassen deren Vertrauenswürdigkeit:
Die Anpassung an die eigene Umgebung erfolgt lediglich im Skript WSUS-Serverbereinigung.cmd. Hier müssen die Zeilen 2 bis 8 entsprechend geändert werden:
@echo off set WSUSPATH=<Pfad zu den Skripten> set WSUS-SERVER=<Servername> set PORT-NUMBER=<Portnummer> REM set DATABASECONNECT=np:\\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query REM set DATABASECONNECT=np:\\.\pipe\MICROSOFT##WID\tsql\query REM set SQLCMD="%ProgramFiles%\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe" ...
In Zeile 2 muss der Pfad zu den restlichen Skripten angegeben werden, in meinem Beispiel in (bitte ohne abschließenden Backslash):
set WSUSPATH=D:\WSUS
In Zeile 3 muss der Servername eingetragen – in Zeile 4 die richtige Port-Nummer konfiguriert werden – bei Windows Server 2012 und einem Small Business Server also in (unter Windows Server 2008 R2 bitte Port 80 verwenden):
set PORT-NUMBER=8530
Im Anschluss muss in Zeile 5 und 6 nur noch der richtige Datenbank-Servername – abhängig von der Version – ausgewählt und aktiviert werden. Bis einschließlich Windows Server 2008 R2 muss die Zeile 5 durch Entfernung der Kommentarfunktion REM aktiviert werden – für eine WID Datenbank unter Windows Server 2012 muss in Zeile 6 der Befehl REM entfernt werden.
Die Einstellung des SQL Kommandozeilen Tools sqlcmd.exe in Zeile 7 ist gleich von mehreren Komponenten abhängig. Das Unterverzeichnis 90 ist bei der Nutzung des SQL Server 2005 Express Edition gültig, kommt der SQL Server 2012 (Express) zum Einsatz muss an dieser Stelle eine 110 eingetragen werden:
set SQLCMD=”%ProgramFiles%\Microsoft SQL Server\110\Tools\Binn\sqlcmd.exe”
Außerdem entscheidet noch die Wahl der Softwareversion über eine Änderung des Pfades für SQLCMD. Bei einer 64 Bit Version bleibt der Pfad bestehen, bei einer 32 Bit Version (x86) muss der Beginn des Pfades %ProgramFiles% mit %ProgramFiles(x86)% ersetzt werden.
Ausführung und Verwendung
Für die Ausführung des PowerShell-Skriptes WSUS-Serverbereinigung.ps1 muss – abhängig von der Konfiguration des Servers – noch die Ausführungsrichtlinie für nicht digital signierte Skripte angepasst werden. Mit dem Powershell-Befehl
Get-ExecutionPolicy -List
erhält man zunächst die Liste der gültigen Einstellungen. Für die Ausführung des Skriptes muss in einer administrativen PowerShell-Konsole der Befehl
Set-ExecutionPolicy RemoteSigned
ausgeführt werden. Dieser bewirkt, dass auch nicht signierte Skripte für die Ausführung erlaubt sind.
Der Start der Bereinigung beginnt mit der Ausführung der Batch-Datei WSUS-Serverbereinigung.cmd. Selbige lässt sich für eine unbeaufsichtigte Ausführung einfach als neuen Task innerhalb der Aufgabenplanung konfigurieren.
Während der Ausführung des Skriptes werden zunächst (durch den Aufruf des Powershell Skriptes WSUS-Serverbereinigung.ps1 in Zeile 18) die WSUS-Dateien bereinigt, im Anschluss wird (in Zeile 24) das SQL Skript WsusDBMaintenance.sql von Microsoft Technet gestartet, welches die WSUS-Datenbank reindiziert und reorganisiert. Die darauf folgenden Aktionen (Zeile 25 bis 27) verkleinern zum Schluss die Datenbank sowie die Datenbankdateien.
Update vom 13. März 2013
Das SQL Skript WsusDBMaintenance.sql habe ich auf Wunsch einiger Leser meines Blogs (siehe ursprünglicher Artikel) angepasst und die folgenden vier Zeilen am Dateiende hinzugefügt:
--Delete sync history PRINT 'Delete sync history.' + convert(nvarchar, getdate(), 121) DELETE FROM tbEventInstance WHERE EventNamespaceID = '2' AND EVENTID IN ('381', '382', '384', '386', '387', '389') GO
Der Befehl bewirkt, dass aus der WSUS-Datenbank alle alten Synchronisierungseinträge entfernt werden. Dadurch war eine Anpassung oder Änderung des Aufruf-Skriptes (WSUS-Serverbereinigung.cmd) nicht notwendig. Weitere Informationen zum Löschen der Synchronisierungseinträge findet man bei wsus.de.
Während jeder Ausführung werden sämtliche Ausgaben im Ordner der Skripte in der Datei WSUS-Cleanup.log protokolliert.
Fazit
Wenngleich sich an der Funktionsweise des Windows Software Update Service nichts verändert hat, so unterscheidet sich die Installation unter Windows Server 2012 leicht zum Vorgänger Windows Server 2008 R2. Die Portänderungen und der Einsatz einer neuen internen Windows Datenbank machte kleinere Anpassungen in meinen eigenen Skripten für die automatische Bereinigung der Datenbank notwendig. Wie immer, für Verbesserungsvorschläge, Kritik oder Fragen bin ich immer offen und freue mich über jederzeit über einen Kommentar.
http://faq-o-matic.net/?p=5205