RU | EN | DE

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
  • RechtsklickNeuGruppe
  • 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 Users entfernen
  • Fügen Sie die Gruppe GG_WSUS_ProblemServers hinzu

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 DelegationErweitert, 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 → NeuDatei

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:

  • Update ist 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 wirdKeine neue Instanz starten Gruppenrichtlinieneinstellungen 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_ProblemServers an 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.