Leider hat Microsoft in der GUI des WSUS keine Möglichkeit vorgesehen, die monatlichen Vorschau-Updates beim Einsatz automatischer Genehmigungen über einen Filter ausschließen zu können.
Gelöst werden kann diese Problem mittels der Powershell bzw. eines Powershell-Skripts, das auch als Powershell-Laie mit einem guten Tutorial sowie Google in endlicher Zeit zusammengesucht- und kopiert werden kann.
Als erstes müssen die für WSUS notwendigen Assemblies geladen werden
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | Out-Null
Dann wird die Verbindung zum WSUS-Server hergestellt
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer()
Sofern die Freigabe der Updates nicht für alle Computer, sondern nur für bestimmte Gruppen vorgenommen werden soll, kann die entsprechende Gruppe zur späteren Verwendung festgelegt und zur Kontrolle ausgegeben werden
$group = $wsus.GetComputerTargetGroups() | where {$_.Name -eq 'Update mit WSUS'}
Write-Host ($group | Format-Table | Out-String)
Für die Freigabe bzw. das Ablehnen interessieren nur solche Updates, die zum einen noch nicht genehmigt (oder abgelehnt) wurden und auch erforderlich sind:
$updateScope = New-Object Microsoft.UpdateServices.Administration.UpdateScope
$updateScope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved
$updateScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::NotInstalled
Zu Informationszwecken kann die Menge an zu bearbeitenden Updates ausgegeben werden
$totalUpdateCount = $wsus.GetUpdateCount($updateScope)
Write-Host "Updates to process:", $totalUpdateCount
Dann werden die Updates in einer Schleife abgearbeitet
$wsus.GetUpdates($updateScope) | ForEach {
Write-Host $_.Title, "- " -NoNewline
Sofern im Titel kein “Preview of” vorkommt, soll das Update genehmigt werden. Die Titel werden in englischer Sprache verarbeitet, so daß nach “2017-05 Preview of Monthly Quality Rollup for Windows 7 for x86-based Systems (KB4019265)” statt “2017-05 Vorschau des monatlichen Qualitätsrollups für Windows 7 für x86-basierte Systeme” gesucht werden muss:
if (-not ($_.Title -like "*Preview of*")) {
Falls zur Installation eine Lizenzvereinbarung angenommen werden muss, kann dies ebenfalls über das Powershell-Skript erfolgen
if ($_.RequiresLicenseAgreementAcceptance) {
$_.AcceptLicenseAgreement()
}
Anschließend wird das Update zur Installation in der oben festgelegten Gruppe genehmigt:
$_.Approve("Install", $group)
Write-Host "approved" -ForegroundColor green
}
Sofern es sich um ein Vorschau-Update handelt, wird das Update stattdessen abgelehnt
else {
$_.Decline()
Write-Host "declined" -ForegroundColor red
}
}
Am Ende des Skripts erfogt dann noch die Ausgabe, daß das Skript tatsächlich am Ende angekommen ist
Write-Host "done."