Schritt 1. Bereiten Sie das Skript vor
Erstellen Sie eine Datei: Force-WSUSCheckIn.ps1
Die Inhalte sind:
[CmdletBinding()]
param()
$ErrorActionPreference = 'Stop'
$LogDir = 'C:\ProgramData\WSUS'
$LogFile = Join-Path $LogDir 'Force-WSUSCheckIn.log'
if (-not (Test-Path $LogDir)) {
New-Item -Path $LogDir -ItemType Directory -Force | Out-Null
}
function Write-Log {
param(
[string]$Message,
[string]$Level = 'INFO'
)
$line = '{0} [{1}] {2}' -f (Get-Date -Format 'yyyy-MM-dd HH:mm:ss'), $Level, $Message
Add-Content -Path $LogFile -Value $line
Write-Output $line
}
try {
Write-Log '--- Start WSUS trigger ---'
try {
$wua = Get-Service -Name wuauserv -ErrorAction Stop
if ($wua.Status -ne 'Running') {
Write-Log 'Starting service wuauserv'
Start-Service -Name wuauserv -ErrorAction Stop
Start-Sleep -Seconds 3
}
else {
Write-Log 'Service wuauserv already running'
}
}
catch {
Write-Log "Could not verify/start wuauserv: $($_.Exception.Message)" 'WARN'
}
Write-Log 'Creating Microsoft.Update.Session COM object'
$updateSession = New-Object -ComObject Microsoft.Update.Session
Write-Log 'Running update search'
$searchResult = $updateSession.CreateUpdateSearcher().Search("( IsInstalled = 0 and IsHidden = 0 )")
if ($null -ne $searchResult -and $null -ne $searchResult.Updates) {
Write-Log ("Search completed successfully. Updates found: {0}" -f $searchResult.Updates.Count)
}
else {
Write-Log 'Search completed, but result object is empty' 'WARN'
}
Write-Log '--- Finish WSUS trigger OK ---'
exit 0
}
catch {
Write-Log ("ERROR: {0}" -f $_.Exception.Message) 'ERROR'
Write-Log '--- Finish WSUS trigger FAILED ---' 'ERROR'
exit 1
}Schritt 2. Platzieren Sie das Skript an einem zugänglichen Ort
Der einfachste Weg ist in SYSVOL, sodass alle Server in der Domäne die Datei bequem lesen können.
Zum Beispiel:
\\domain.local\SYSVOL\domain.local\scripts\WSUS\Force-WSUSCheckIn.ps1
Wenn kein Ordner WSUS vorhanden ist, erstellen Sie ihn.
Wichtig: – Domänencomputer müssen über Lesen für diesen Pfad verfügen
- Normalerweise müssen Sie die Berechtigungen nicht ändern. Für SYSVOL funktioniert es normalerweise bereits wie es sollte
Schritt 3. Erstellen Sie eine Sicherheitsgruppe für problematische Server
IN ADUC: dsa.msc
Weiter:
- Öffnen Sie den Container, in dem Sie Gruppen speichern, zum Beispiel
Groups - Rechtsklick → Neu → Gruppe
- Name:
GG_WSUS_ProblemServers - Typ: Sicherheit
- Bereich: Global
- Okay
Fügen Sie dann 20 Server hinzu:
- Gruppeneigenschaften öffnen
- Registerkarte Mitglieder
- Hinzufügen
- Server-Computerobjekte hinzufügen Dies ist eine sichere Möglichkeit, die Verwendung von Gruppenrichtlinienobjekten einzuschränken, ohne die OU-Struktur zu ändern. Mithilfe der Sicherheitsfilterung können Sie ein Gruppenrichtlinienobjekt nur auf Mitglieder einer bestimmten Gruppe anwenden.
Schritt 4: Erstellen Sie ein neues Gruppenrichtlinienobjekt
Öffnen: gpmc.msc
Weiter:
- geöffnet:
- Wald: rrlnz.local
- Domänen
- rrlnz.local
Nun gibt es zwei Möglichkeiten, das GPO zu verknüpfen:
Option A ist die einfachste
Link zur Domain selbst:
- Rechtsklick auf
domain.local - Erstellen Sie ein Gruppenrichtlinienobjekt in dieser Domäne und verknüpfen Sie es hier…
Name, zum Beispiel:
GPO_WSUS_ForceCheckIn_ProblemServers
Dies funktioniert, wenn die Server über verschiedene Organisationseinheiten verteilt sind und Sie einen Verwaltungspunkt benötigen. Wir werden dann den Einsatz von Sicherheitsfiltern einschränken. Der GPO-Bereich wird durch einen Verweis auf Site/Domäne/OU definiert, und die tatsächliche Anwendung kann durch Filterung und Targeting weiter eingeschränkt werden.
Option B – wenn es eine gemeinsame oberste Organisationseinheit gibt
Sie können weiter oben im Baum verlinken, dies ist jedoch nicht erforderlich.
Schritt 5. Einrichten der Sicherheitsfilterung
Wählen Sie das erstellte Gruppenrichtlinienobjekt in GPMC aus.
Auf der Registerkarte Umfang:
Im Block Sicherheitsfilterung
Authenticated Usersentfernen- Fügen Sie die Gruppe
GG_WSUS_ProblemServershinzu
Danach gilt das Gruppenrichtlinienobjekt nur noch für Server dieser Gruppe, auch wenn die Verknüpfung auf Domänenebene erfolgt. Dies ist genau das Standard-Sicherheitsfilterszenario für GPOs.
Wichtig
Überprüfen Sie auf der Registerkarte Delegation → Erweitert, ob die Gruppe GG_WSUS_ProblemServers über die folgenden Rechte verfügt:
- Lesen
- Gruppenrichtlinie anwenden
Normalerweise wird dies bei korrekter Hinzufügung durch die Sicherheitsfilterung nach Bedarf eingestellt.
Schritt 6: Bearbeiten Sie das Gruppenrichtlinienobjekt
Rechtsklick auf GPO → Bearbeiten Der Gruppenrichtlinienverwaltungs-Editor öffnet sich.
Schritt 7. Fügen Sie das Kopieren von Dateien über Einstellungen → Dateien hinzu
Gehen Sie hier: Computerkonfiguration -> Einstellungen -> Windows-Einstellungen -> Dateien
Wenn Sie über englische Ausrüstung verfügen, ist diese:
Computer Configuration -> Preferences -> Windows Settings -> Files
Jetzt:
- Rechtsklick → Neu → Datei
Füllen Sie aus:
Allgemein
- Aktion:
Aktualisieren - Quelldatum:
\\rrlnz.local\SYSVOL\rrlnz.local\scripts\WSUS\Force-WSUSCheckIn.ps1 - Zieldatei:
C:\ProgramData\WSUS\Force-WSUSCheckIn.ps1
Warum Aktualisieren und nicht Ersetzen:
Updateist in der Regel ausreichend und in Begleitung weicher – Die Datei wird aktualisiert, wenn sich das GPO-Einstellungselement ändert Der Einstellungsknoten und das Dateielement werden genau für solche zusätzlichen Einstellungen und die Dateibereitstellung verwendet.
Schritt 8. Geplante Aufgabe über Einstellungen hinzufügen
Gehen Sie hier: Computerkonfiguration -> Einstellungen -> Systemsteuerungseinstellungen -> Geplante Tasks
Auf Englisch: Computer Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks
Jetzt:
- Rechtsklick → Neu
- Wählen Sie Geplanter Task (mindestens Windows 7)
oder eine ähnliche Option für das neue Betriebssystem
Registerkarte „Allgemein“.
Füllen Sie es so aus:
- Aktion:
Erstellen - Name:
Force-WSUS-CheckIn - Beschreibung:
Runs Microsoft.Update.Session search to force WSUS check-in on problematic servers - Ausführen als / Sicherheitsoptionen:
NT AUTHORITY\SYSTEM - aktivieren:
- Unabhängig von der Benutzeranmeldung ausführen
- Mit höchsten Privilegien ausführen Die Ausführung von SYSTEM für eine Computeraufgabe ist hier korrekter als von einem Domänenadministrator.
Trigger-Registerkarte
Fügen Sie zwei Trigger hinzu.
Auslöser 1
- Neu
- Aufgabe starten:
Beim Start - Verzögern für:
20 Minuten
Auslöser 2
- Neu
- Aufgabe starten:
Nach Zeitplan - Einstellung:
Täglich - Start:
03:15:00 - wenn das Verzögerungsfeld verfügbar ist:
- Verzögern für:
1 Stunde - aktivieren Aktiviert
Die Idee hier ist einfach: ein Start nach dem Serverstart und ein geplanter Start pro Tag. Dies steht nicht im Widerspruch zur normalen Verarbeitung von Gruppenrichtlinien und erzeugt keinen übermäßig aggressiven Lärm. Computer-GPOs werden beim Start angewendet und dann regelmäßig im Hintergrund aktualisiert.
Registerkarte „Aktionen“.
Fügen Sie eine Aktion hinzu:
- Programm/Skript:
powershell.exe - Argumente hinzufügen: -NoProfile -ExecutionPolicy Bypass -File „C:\ProgramData\WSUS\Force-WSUSCheckIn.ps1“
- Beginn in: C:\ProgramData\WSUS ###Registerkarte Bedingungen
Ich würde zu strenge Einschränkungen entfernen:
- Entfernen Sie die Abhängigkeit von Netzstrom, wenn es sich um Server in einer VM handelt und das Feld überhaupt existiert
- Bleiben Sie nicht im Leerlauf hängen
Registerkarte „Einstellungen“.
Setzen Sie:
- Aufgabe kann bei Bedarf ausgeführt werden
- Aufgabe so schnell wie möglich nach einem verpassten Start ausführen
- Wenn die Aufgabe bereits ausgeführt wird →
Keine neue Instanz startenGruppenrichtlinieneinstellungen unterstützen geplante Aufgaben und Targeting auf Elementebene für Einstellungselemente, wenn Sie die Anwendung einzelner Elemente weiter einschränken müssen.
Schritt 9. Ist es immer noch notwendig, Targeting auf Artikelebene durchzuführen?
Nicht erforderlich, wenn Sie die Sicherheitsfilterung bereits über die Gruppe GG_WSUS_ProblemServers verwenden.
Wenn Sie jedoch eine „doppelte Versicherung“ wünschen, können Sie das Targeting für beide Präferenzelemente aktivieren – sowohl für die Datei als auch für die geplante Aufgabe.
So aktivieren Sie es
Öffnen Sie den Eintrag → Registerkarte Gemeinsam / Common
- Aktivieren Sie das Kontrollkästchen Elementbezogene Zielgruppenadressierung
- Drücken Sie Zielgruppenadressierung…
Dort können Sie hinzufügen:
- Sicherheitsgruppe
- und geben Sie
GG_WSUS_ProblemServersan Oder sogar bestimmte Computernamen. Microsoft weist ausdrücklich darauf hin, dass Sie mit dem Targeting auf Elementebene festlegen können, dass einzelne Einstellungselemente nur für ausgewählte Computer innerhalb eines einzigen Gruppenrichtlinienobjekts gelten.
Mein Rat
Gehen Sie folgendermaßen vor:
- Sicherheitsfilterung auf GPO-Ebene – und ohne Targeting auf Artikelebene beim ersten Durchgang
Es ist einfacher.
Wenn Sie dann feststellen, dass Sie mehr benötigen, fügen Sie das Targeting hinzu.
Schritt 10. Erzwingen Sie die Anwendung auf einem Testserver
Führen Sie auf einem problematischen Server Folgendes aus:
gpupdate /force
Starten Sie dann den Server neu oder prüfen Sie zumindest, ob die Aufgabe angezeigt wird.
Warum ein Neustart nützlich ist: Die GPO-Einstellungen des Computers werden angewendet, wenn die Maschine gestartet wird, und die Überprüfung einer geplanten Aufgabe als Computereinstellung ist nach dem normalen Startzyklus oft bequemer.
Schritt 11. Überprüfen Sie, ob das Gruppenrichtlinienobjekt tatsächlich angekommen ist
Option 1 – gpresult
Auf dem Server:
gpresult /h C:\Temp\gpresult.html
Öffnen Sie die Datei C:\Temp\gpresult.html und prüfen Sie:
- Angewandte Gruppenrichtlinienobjekte
- Gibt es dort
GPO_WSUS_ForceCheckIn_ProblemServers?
Microsoft dokumentiert gpresult als Standardmethode zum Anzeigen resultierender Richtlinien.
Option 2 – Assistent für Gruppenrichtlinienergebnisse
An GPMC:
- Ergebnisse der Gruppenrichtlinien
- Assistent für Gruppenrichtlinienergebnisse
- Wählen Sie den gewünschten Server aus
Dies ist auch die offizielle Möglichkeit, tatsächlich angewendete GPOs anzuzeigen.
Option 3 – Protokolle
Wenn das Gruppenrichtlinienobjekt nicht angekommen ist, sehen Sie nach:
- Ereignisanzeige
Applications and Services Logs -> Microsoft -> Windows -> GroupPolicy -> Operational
Microsoft empfiehlt dieses Protokoll zur Fehlerbehebung bei GPO-Implementierungen. Wenn das Problem bei den Einstellungen liegt, werden deren Ereignisse in das Anwendungsprotokoll geschrieben und zusätzliche Details können über die Protokollierung/Ablaufverfolgung durch Gruppenrichtlinien aktiviert werden.
Schritt 12. Überprüfen Sie das Aufgaben- und Skriptprotokoll
Auf dem Server:
Get-ScheduledTask -TaskName „Force-WSUS-CheckIn“
Get-ScheduledTaskInfo -TaskName „Force-WSUS-CheckIn“
Dann schauen Sie sich das Protokoll an:
Get-Content C:\ProgramData\WSUS\Force-WSUSCheckIn.log -Tail 50
Wenn Sie es sofort manuell starten möchten:
Start-ScheduledTask -TaskName „Force-WSUS-CheckIn“
Schritt 13. Nach der Prüfung – an alle 20 verteilen
Wenn ein Server funktionierte:
- Stellen Sie sicher, dass die Datei kopiert wird
- Die Aufgabe wird erstellt
- Protokoll wird geschrieben
- WSUS ist aktualisiert
Warten Sie dann einfach auf die Gruppenrichtlinienaktualisierung auf den verbleibenden Servern oder nehmen Sie einen selektiven gpupdate /force vor.