Remote Computer Policy Update per CLI

Möchte man remote die Group Policy von mehreren Domain Computern aktualisieren, ist der einfachste Weg, das Update Feature der Group Policy Management Console (GPMC) zu nutzen. Nachteilig ist dieses Feature für Clients und Terminal Server, da sich nicht auswählen lässt, dass nur die Computer Policy aktualisiert werden soll. Es wird immer die User Policy mit aktualisiert, was dazu führt, dass die User eine Benachrichtigung bekommen und im schlimmsten Fall zur Abmeldung aufgefordert werden.

Um dieses Problem zu lösen, lässt sich die Computer Policy per Skript aktualisieren, entweder per PowerShell oder CMD/Batch.

Für beide Lösungen lege ich mir als Ausgangsbasis eine Textdatei Server.txt in mein Arbeitsverzeichnis C:\Scripts, in dem alle zu aktualisierten Server (1 pro Zeile) eingetragen werden, also z.B.:

server01
server02
server03
Powershell-Skript

Die PowerShell-Skript Methode kommt mit reinen Bordmitteln aus. Lediglich PowerShell-Remoting / WinRM muss auf den Zielmaschinen aktiviert und konfiguriert sein.

ForEach($computer in Get-Content C:\Scripts\Server.txt) {
  Invoke-Command -ComputerName $computer -ScriptBlock {
    gpupdate /force /target:computer
  }
}

Da das Get-Content Cmdlet versucht,  den kompletten Inhalt der Datei auf einmal in den Arbeitsspeicher zu laden, wird dieses Verfahren bei großen Dateien mit vielen Zeilen proportional imperformant.  Statt dessen lässt sich auch C# (.NET) nutzen, welches jede Zeile einzeln einließt und verarbeitet:

ForEach($computer in [System.IO.File]::ReadLines("C:\Scripts\Server.txt")) {
  Invoke-Command -ComputerName $computer -ScriptBlock {
    gpupdate /force /target:computer
  }
}
Batch-Skript

Für die Nutzung der Batch-Skript Methode wird psexec.exe benötigt, um den entsprechenden Befehl remote auszuführen. Das Programm kann hier heruntergeladen werden.

for /f %%i in (C:\Scripts\Server.txt) do (
  C:\Scripts\psexec.exe \\%%i -d -n 60 -accepteula gpupdate /force /target:computer
)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.