Wie man ein GPO-Anmeldeskript nur einmal ausführt

Gruppenrichtlinien-Anmeldeskripte sind praktisch, um Aufgaben beim Benutzer-Login zu automatisieren. Manchmal möchte man jedoch, dass ein bestimmtes Skript nur einmal ausgeführt wird – beispielsweise für die Ersteinrichtung oder benutzerspezifische Anpassungen. Die wiederholte Ausführung bei jeder Anmeldung kann schließlich lästig sein oder, schlimmer noch, Konfigurationen beschädigen. Ziel ist es, eine Methode einzurichten, die sicherstellt, dass das Skript nur beim ersten Login ausgeführt wird und alle nachfolgenden überspringt. Es ist etwas ungewöhnlich, dass Windows und Gruppenrichtlinien keine integrierte Option zum einmaligen Ausführen von Anmeldeskripten bieten, weshalb ein kleiner Trick erforderlich ist. Diese Anleitung beschreibt zwei gängige Methoden, um dies zu erreichen und so die Skriptausführung zu steuern und redundante Ausführungen zu vermeiden. Diese Anleitung richtet sich an Benutzer, die zuverlässige, einmalige Skriptauslöser benötigen, ohne diese ständig manuell verwalten zu müssen.

Wie man ein GPO-Anmeldeskript nur einmal ausführt

Methode 1: Verwendung einer Markierungsdatei im Benutzerprofil

Diese Methode funktioniert, weil sie auf einer Signatur basiert – einer kleinen Datei im Benutzerprofil, die signalisiert, dass das Skript bereits ausgeführt wurde. Das Skript prüft, ob diese Datei existiert. Falls nicht, erstellt es sie und führt die erforderlichen Aufgaben aus. Beim nächsten Login des Benutzers überspringt das Skript die eigentliche Arbeit, da die Datei bereits vorhanden ist. Klingt simpel, ist aber für die meisten Anwendungsfälle effektiv, insbesondere wenn eine Aktion nur einmal pro Benutzer ausgeführt werden soll.

So gehen Sie vor:

  • Erstellen Sie Ihr Batch-Skript ( corp_user_init.bat ) mit folgendem Inhalt und speichern Sie es auf Ihrem Domänencontroller unter %SystemRoot%\SYSVOL\sysvol\ domain\scripts :
@echo off IF EXIST C:\Users\%UserName%\AppData\Local\app_init.txt GOTO END REM Your setup commands go here echo First run at %date% %time% > C:\Users\%UserName%\AppData\Local\app_init.txt :END 

Was passiert? Das Skript prüft, ob eine bestimmte Datei app_init.txtim Benutzerprofil existiert. Falls ja, wird der Einrichtungscode übersprungen. Andernfalls werden die gewünschten Befehle ausgeführt (z. B.Software installieren, Konfigurationen vornehmen usw.), die Datei erstellt und das Ergebnis als „Fertig“ markiert. Bei nachfolgenden Anmeldungen ist die Datei vorhanden, sodass keine Wiederholungen nötig sind. Ich habe das Skript mit einigen Testkonten ausprobiert und es ist erstaunlich zuverlässig. Allerdings kann es bei *sehr* frischen Installationen zu Verzögerungen bei Berechtigungen oder langsamen Profilladevorgängen kommen. Insgesamt ist es aber eine solide Methode zur Steuerung der Programmausführung.

Als Nächstes verknüpfen Sie das Skript über die Gruppenrichtlinie:

  • Öffnen Sie die Gruppenrichtlinienverwaltungskonsole (gpmc.msc).
  • Erstellen Sie ein neues Gruppenrichtlinienobjekt (GPO) oder bearbeiten Sie ein vorhandenes und verknüpfen Sie es mit der entsprechenden Organisationseinheit (OU).
  • Navigieren Sie zu BenutzerkonfigurationRichtlinienWindows-EinstellungenSkripts (Anmeldung/Abmeldung)
  • AnmeldenHinzufügen auswählen
  • Richten Sie es auf:\\your_domain\SYSVOL\your_domain\scripts\corp_user_init.bat

Sobald dies angewendet wurde, wird das Skript beim ersten Anmelden ausgeführt, erstellt die Markierungsdatei und führt anschließend bei weiteren Anmeldungen keine Hauptaufgaben mehr aus. Stellen Sie sicher, dass die Gruppenrichtlinie aktualisiert wird (warten Sie einen Moment oder führen Sie das Skript gpupdate /forceauf dem Client aus).Falls Probleme auftreten, überprüfen Sie gpresult /rdie angewendeten Richtlinien. Manchmal werden Gruppenrichtlinienobjekte (GPOs) nicht sofort wirksam, insbesondere bei Netzwerkproblemen oder fehlenden Berechtigungen.

Methode 2: Verwendung geplanter Aufgaben mit einmaligem Auslöser

Diese Methode ist etwas ungewöhnlich, aber äußerst flexibel, wenn Sie ein Skript nur einmal ausführen möchten, unabhängig von Benutzerprofilen oder Umgebungsbesonderheiten. Im Prinzip erstellen Sie eine geplante Aufgabe, die so konfiguriert ist, dass sie nur einmal ausgeführt wird – ausgelöst durch die erste Anmeldung. Diese Methode ist besonders geeignet für die Ausführung komplexer PowerShell-Skripte oder solcher, die erhöhte Berechtigungen erfordern, da Aufgaben präziser angepasst werden können.

So funktioniert es:

  • Speichern Sie Ihr Skript (PowerShell oder BAT) im SYSVOL- Ordner auf Ihrem Domänencontroller, z. B.\\<your_domain>\SYSVOL\\scripts\your_script.ps1
  • Erstellen Sie ein neues Gruppenrichtlinienobjekt (GPO), gehen Sie zu EinstellungenSystemsteuerungseinstellungenGeplante Aufgaben.
  • Wählen Sie NeuSofortaufgabe (mindestens Windows 7)
  • Geben Sie der Aufgabe einen Namen und wechseln Sie dann zur Registerkarte „Aktionen“.
  • Klicken Sie auf „Neu“ und wählen Sie dann unter „Aktion“ die Option „Programm starten“.
  • Im Feld „Programm/Skript“ Folgendes einfügenpowershell.exe
  • Geben Sie im Feld „Argumente hinzufügen“ Folgendes ein:-ExecutionPolicy Bypass -File \\your_domain\SYSVOL\your_domain\scripts\your_script.ps1
  • Gehen Sie zurück zu den Hauptaufgabeneigenschaften, wechseln Sie zur Registerkarte „Allgemein“ und aktivieren Sie die Option „Einmal anwenden“ und „Nicht erneut anwenden“.

Wenn Sie die Aufgabe auf einmalige Ausführung festlegen, wird sie beim ersten Login eines Benutzers gestartet und anschließend nicht wiederholt. Dies ist praktisch für die Bereitstellung eines Setup-Skripts, das nur einmal ausgeführt werden muss, beispielsweise zum Festlegen von Registrierungsschlüsseln oder zum Installieren von Erstkonfigurationen. Auf manchen Systemen kann es zu leichten Verzögerungen kommen oder die Aufgabe wird nicht sofort ausgeführt, wenn die Benutzerumgebung noch nicht vollständig geladen ist. Wenn Sie PowerShell-Skripte verwenden, stellen Sie außerdem sicher, dass die Ausführungsrichtlinie die Ausführung von Skripten zulässt und nicht durch diesen -ExecutionPolicy BypassTrick umgangen wird.

Ja, diese beiden Optionen bieten eine recht gute Kontrolle. Es ist zwar etwas umständlich, aber Windows und Gruppenrichtlinienobjekte sind nicht standardmäßig für die einmalige Ausführung beim Anmelden ausgelegt. Mit diesen Einstellungen ist es aber machbar und, sobald es richtig konfiguriert ist, ziemlich zuverlässig.

Zusammenfassung

  • Verwenden Sie eine Markierungsdatei in Benutzerprofilen, um die Skriptausführung zu verfolgen.
  • Verknüpfen Sie GPO-Anmeldeskripte mit einer Prüfung auf diese Markierung
  • Alternativ können Sie für komplexere Skripte eine einmalig geplante Aufgabe erstellen.
  • Testen Sie immer zunächst auf einigen Testkonten, bevor Sie die Anwendung flächendeckend einführen.
  • Stellen Sie mit Befehlen wie diesen sicher, dass Gruppenrichtlinienobjekte (GPOs) korrekt aktualisiert und angewendet werden.gpresult /r

Zusammenfassung

Wenn eine Methode nicht gleich beim ersten Mal perfekt funktioniert, wundern Sie sich nicht. Manchmal dauert es etwas, bis Gruppenrichtlinien angewendet werden, oder Dateiberechtigungen machen Probleme. Aber sobald alles eingerichtet ist, ist es sehr befriedigend zu sehen, wie ein Skript nur einmal ausgeführt wird und dann nie wieder, insbesondere bei der Konfiguration beim ersten Login. Hoffentlich spart dies dem einen oder anderen ein paar Stunden wiederholter Reinigungs- und Konfigurationsarbeit.