Beim Beitritt zu einer Domäne ein Skript ausführen

Beim Beitritt zu einer Domäne ein Skript ausführen

Ich habe eine Microsoft-Domäne (meistens 2008r2\7).
Ich suche nach einer Möglichkeit, ein Skript unmittelbar nach dem Beitritt zu einer Domäne (nach dem Neustart) auszuführen (ohne dass eine Benutzeranmeldung erforderlich ist), und bisher ist mir das nicht gelungen.

Außerdem möchte ich, dass es nur einmal ausgeführt wird, sodass die Planung einer wiederholten Aufgabe keine Option ist.
Es scheint mir einfach Verschwendung zu sein, es immer und immer wieder ausführen zu lassen.

Ich habe ein GPO mit Startskript ausprobiert, aber wenn der Computer das GPO empfängt, ist es lange nach dem Start.
Ich habe auch ein GPO mit einer geplanten Aufgabe (mit verschiedenen Auslösern) ausprobiert, aber auch das hat nicht funktioniert: Der
Auslöser „Beim Start“ schlägt genauso fehl wie das Startskript.
„Bei Aufgabenerstellung“ schlägt fehl, vermutlich, weil es nicht auf die übliche Weise erstellt wird.
„Nach Zeitplan“ ist irrelevant, weil ich es direkt nach dem Beitritt ausführen muss (und das Festlegen eines bereits verstrichenen Datums hat nicht funktioniert).
Ich konnte keine relevanten Registrierungsschlüssel finden, aber ich nehme an, sie hätten dasselbe Problem wie das GPO-Startskript.

Die einzige Idee, die meinen Anforderungen entsprechen könnte, besteht darin, dem entsprechenden Ereignis auf den DCs eine Aufgabe zuzuordnen und das Skript remote auszuführen.

Irgendwelche besseren Vorschläge?

--Bearbeiten--
Zu den Antworten (die zwar großartig sind, aber nicht ganz ausreichen) möchte ich noch ein paar Punkte hinzufügen:
1. Die Frage bezieht sich auf beide Server (2008r2\2012\2012r2), obwohl ich nur auf 2012r2 getestet habe.
2. Ich suche nach einer eher auf Runonce basierenden Lösung, d. h. ich möchte nicht, dass sie endlos läuft, bis eine bestimmte Bedingung erfüllt ist.
3. Wir verwenden Images, um Server und Workstations bereitzustellen, aber ich kann keine Lösung verwenden, bei der diese bearbeitet werden müssen, weil a) ich sie dann jedes Mal aktualisieren müsste, wenn ich etwas in meinem Skript ändern muss, und b) BYODs.
4. Wir verwenden kein Verbindungsskript (wir brauchen einfach keins...), also scheint es mir Zeitverschwendung, eines zu verwenden. Außerdem gibt es ein paar Probleme damit (z. B. wo soll ich es platzieren? Im Image? An einem gemeinsam genutzten Ort? Was ist mit BYODs? Das würde Punkt 3 zunichte machen).

Danke.

Antwort1

Fügen Sie Ihrem Build-Image einen benutzerdefinierten Registrierungsschlüssel hinzu, einfach irgendwo einen einfachen Wert „1“.
Fügen Sie eine geplante Aufgabe hinzu, die den Registrierungsschlüsselwert des Build-Images überprüft, und fügen Sie in diesem Registrierungsschlüssel Überprüfungen für Ihren Domänennamen hinzu

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters

Wenn beides gefunden wird, führen Sie Ihr Skript aus und ändern Sie den benutzerdefinierten Registrierungsschlüssel nach Abschluss auf 0. Lassen Sie diese Aufgabe beim Start ausführen.

Sie können diese Aufgabe dann entweder unverändert lassen oder eine Gruppenrichtlinie einrichten, die die geplante Aufgabe löscht. Wenn Sie sie jedoch unverändert lassen und das Skript erneut ausführen müssen, können Sie den Registrierungsschlüssel einfach wieder auf 1 ändern und neu starten.

Ein geringes Sicherheitsrisiko besteht darin, dass die geplante Aufgabe als lokales Administratorkonto ausgeführt werden muss.

Antwort2

Müssen Sie nach dem Beitritt zur Domäne nicht ohnehin neu starten? Wenn Sie ein Startskript erstellt haben, wird es direkt nach dem Neustart angewendet, wenn es die anderen Gruppenrichtlinienobjekte lädt.

Wie trittst du jetzt der Domäne bei? Du könntest den Domänenbeitritt auch in dein Skript integrieren. Bei Powershell geht das mit Add-Computer, in der Kommandozeile kannst du netdom verwenden.

Normalerweise würden Sie dies in Ihre Aufgabensequenz integrieren, wenn Sie ein Konfigurationsverwaltungstool verwenden.

Antwort3

Wie wird der Join ausgeführt? Manuelle GUI-Interaktion oder über ein Skript? Wenn es sich um ein Skript handelt, fügen Sie dem Join-Skript eine Zeile hinzu, damit Ihr zweites Skript über den RunOnce-Registrierungsschlüssel ausgeführt wird.

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977%28v=vs.85%29.aspx

---BEARBEITEN BEGINNEN---
Doh! Richtig

Ich denke über Ihren Kommentar zur verzögerten Anwendung des GPO nach … Ich arbeite hauptsächlich mit Server-Betriebssystemen, die synchrone GPO-Verarbeitung durchführen. Arbeitsstationen sind asynchron. Versuchen Sie Folgendes, um Asynchronität zu erreichen:

Versuchen Sie, in Ihrem Build-Prozess/Image die Option „Fast Logon Optimization“ zu deaktivieren. https://technet.microsoft.com/en-us/magazine/gg486839.aspx
Computerkonfiguration\Administrative Vorlagen\System\Anmeldung
Beim Computerstart und bei der Anmeldung immer auf das Netzwerk warten = Aktiviert

Erstellen eines GPO-Startskripts GPO:
Computerkonfiguration/Richtlinien/Windows-Einstellungen/Skripts/Start

Verwenden Sie innerhalb des Skripts, das Sie dort definieren, diesen Code:

$built = gwmi Win32_OperatingSystem | foreach {[System.Management.ManagementDateTimeconverter]::ToDateTime($_.InstallDate)}
if ($built -gt (get-date).addHours(-4)) {
    "do something"
}

Antwort4

Ich habe in Schulen gearbeitet.

Und wir automatisieren den Join- und Scripting-Prozess (ein perfektes Image zum Bereitstellen zu haben, das über Jahre hält, ist vielleicht utopisch). Daher haben wir WDS/MDT zum Bereitstellen verwendet.

Wir haben die XML-Antwortdatei ausgefüllt, sodass unsere bereitgestellten Multicast-Images einer OU-Installation (Organisationseinheit) beitreten. Außerdem haben wir GPO für die abschließende Skripterstellung angewendet und die OU-Installation verlassen.

Auf diese Weise müssen wir die Arbeitsstation nur mit dem richtigen Namen umbenennen und in der richtigen Organisationseinheit platzieren.

verwandte Informationen