Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

WSUS 3.0 - Updates und Computer per Powershell-Script aufräumen

Tipp Entwicklung Batch & Shell

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

14.09.2009, aktualisiert 22:38 Uhr, 24855 Aufrufe, 6 Kommentare, 5 Danke

Wer kennt das nicht: Im lokalen Netzwerk steht/en einer oder mehrere WSUS-Server die täglich / wöchentlich ihre Updates synchronisieren und downloaden. Nun werden oft alte Updates durch Neue ersetzt (Revisionen) aber auch viele Upates werden auf Grund eines Servicepack nicht mehr benötigt. Dem WSUS-Server manuell in bestimmten Zeitabständen hinterher zuräumen ist einfach lästig und kostet wertvolle Arbeitszeit.

Bisher war es nicht möglich mit Hilfe von Microsoft - Tools diesen Vorgang zu automatisieren. Mit der neuen Kommandozeilenprogramm "Powershell" ist es nun problemlos möglich.
Zuerst speichert ihr folgenden Quellcode in eine Textdatei mit der Endung ".ps1" ab:

01.
#Region PARAMETERS 
02.
   
03.
### WSUS Verbindungsparameter ### 
04.
 
05.
# Servername 
06.
[String]$updateServer = "test01.domain.local"  
07.
 
08.
# SSL Verbinung, $True = Ja, %False = Nein 
09.
[Boolean]$useSecureConnection = $False  
10.
 
11.
# Gibt den Port an auf welchem der WSUS-Server lauscht 
12.
[Int32]$portNumber = 80  
13.
   
14.
 
15.
### Aufräum-Parameter ### 
16.
 
17.
 
18.
# Ersetzte Updates 
19.
# Lehnen Sie Updates ab, die min. 30 Tage lang nicht genehmigt wurden, die zurzeit von keinem Client benötigt werden und die durch ein genehmigtes Update ersetzt werden. 
20.
[Boolean]$supersededUpdates = $True  
21.
 
22.
# Abgelaufene Updates 
23.
# Lehnen Sie Updates ab, die von Microsoft nicht genehmigt wurden und deren Gültigkeit abgelaufen ist.  
24.
[Boolean]$expiredUpdates = $True  
25.
 
26.
# Nicht verwendete Updates 
27.
# Löschen Sie Updates die abgelaufen sind und min. 30 Tage lang nicht genehmigt wurden.  
28.
[Boolean]$obsoleteUpdates = $True  
29.
 
30.
# Nicht verwendete Updaterevisionen 
31.
# Löschen Sie ältere Revisonen von Updates, die min. 30 Tage lang nicht genehmigt wurden.  
32.
[Boolean]$compressUpdates = $True  
33.
 
34.
# Computer, die keine Verbindung mit dem Server herstellen 
35.
# Löschen Sie Computer, die innerhalb von min. 30 Tagen keine Verbindung mit dem Server hergestellt haben.  
36.
[Boolean]$obsoleteComputers = $True  
37.
 
38.
# Nicht erfoderliche Updatedateien 
39.
# Löschen Sie Updatedateien, die von Updates oder Downstreamservern nicht benötigt werden.  
40.
[Boolean]$unneededContentFiles = $True  
41.
 
42.
#EndRegion PARAMETERS 
43.
 
44.
 
45.
#Region PROGRAM 
46.
 
47.
# Lade .NET - Assembly  
48.
[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")  
49.
   
50.
# Verbindung zum WSUS-Server wird aufgebaut  
51.
$Wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($updateServer,$useSecureConnection,$portNumber) 
52.
 
53.
# Startet den Aufraeumvorgang 
54.
$CleanupManager = $Wsus.GetCleanupManager()  
55.
$CleanupScope = New-Object Microsoft.UpdateServices.Administration.CleanupScope($supersededUpdates,$expiredUpdates,$obsoleteUpdates,$compressUpdates,$obsoleteComputers,$unneededContentFiles) 
56.
$CleanupManager.PerformCleanup($CleanupScope)  
57.
   
58.
#EndRegion PROGRAM
Bitte wundert euch nicht, dass im obigen Script 6 Parameter definierbar sind und im WSUS - Dialog (Optionen => Assistent für die WSUS-Serverbereinigung) nur Fünf Stück. Per Skript ist es möglich den Punkt "Nicht verwendete Updates und Updaterevisonen" getrennt anzusprechen. Das Script könnt ihr dann als geplante Task einrichten. Wie ein Powershell-Script gestartet wird, könnt ihr hier nachlesen.


Viele Grüße,
Dani
Mitglied: -Giraffe-
18.09.2009 um 10:03 Uhr
Hi Dani,

vielen Dank für die Mühe!

Arbeite mich gerade ein zum Thema WSUS und werde das mal testen...

Gruß
Bitte warten ..
Mitglied: manuel-r
18.11.2009 um 18:36 Uhr
Hi Dani,
ich wollte das Script gerade mal testen, weil ich meinen WSUS mal aufräumen müsste. Ganz nebenbei: Das ist mein erstes Experiment mit Powershell und schon gleich stehe ich vor einem gaaaaanz kleinen Problem. Die PS meint nämlich es handelt sich nicht um ein PS-Script und meckert mich mit
Die Benennung "wsuscleanup.ps1" wurde nicht als Cmdlet, Funktion, ausführbares Programm oder Skriptdatei erkannt. Überprüfen Sie die Benennung, und versuchen Sie es erneut. Bei Zeile:1 Zeichen:15 + wsuscleanup.ps1 <<<<
an. Was mache ich falsch?

Manuel
Bitte warten ..
Mitglied: Dani
19.11.2009 um 22:07 Uhr
Hallo Manu,
hast du die Variable "[String]$updateServer" und "[Int32]" für dich angepasst?! Ich starte mein Script manuell auf einem Windows Server 2003 so:
01.
C:\>"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" "c:\wsus\serverbereinigung.ps1"
Und dann erscheint die Ausgabe des Checks:
01.
SupersededUpdatesDeclined : 0 
02.
ExpiredUpdatesDeclined    : 0 
03.
ObsoleteUpdatesDeleted    : 0 
04.
UpdatesCompressed         : 0 
05.
ObsoleteComputersDeleted  : 0 
06.
DiskSpaceFreed            : 0
Was ich vergessen habe zu schreiben, dass ggf. noch ein Registrywert angepasst werden muss. Und zwar unter "HKLM\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" und dort einen neuen REG_SZ - Schnlüssel mit dem Namen "ExecutionPolicy" und als Wert "RemoteSigned".


Grüße,
Dani
Bitte warten ..
Mitglied: JOML
03.03.2010 um 09:50 Uhr
Hallo,

Vielen Dank für die Anleitung.

Jetzt habe ich aber das Problem, dass wir eine SQL DB verwenden wollen... gibt es da auch eine Möglichkeit, dies so per Script durchzuführen...?

Gruss
JOML
Bitte warten ..
Mitglied: Dani
03.03.2010 um 18:57 Uhr
Moin,
was spielt der SQL-Servertyp für eine Rolle?
Wie du oben siehst, wird eine WSUS-Schnittstelle geöffnet. Sollte also auch funktionieren...


Grüße,
Dani
Bitte warten ..
Mitglied: JOML
03.03.2010 um 19:40 Uhr
Hi,

OK.. das heisst also, ich kann das Script auf dem WSUS Server laufen lassen... auch wenn die DB auf einem externen SQL 2008 Server liegt..?


Gruss
JOML
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...