Was ist eine gute Möglichkeit, um eine Liste von Windows-Computern in einer Windows-Domäne neu zu starten? Angenommen, der Windows-Domänencontroller verfügt nicht über einen Dienst, um dies zu tun, empfehlen Sie ein Skript.
Kann ich die Hostnamen auflisten und die Hostnamen durchlaufen, um jeweils einen Neustartbefehl zu senden? Kann ich eine Liste der Hostnamen vom DHCP-Server abrufen, der zur Laufzeit des Skripts in einer Windows 2008-Umgebung ausgeführt wird?
Meine bevorzugten Skriptsprachen sind: PHP, Javascript, Bash, Python (weiß sehr wenig), VB (weiß es, aber mag es nicht)
windows-server-2008
active-directory
dampfbetrieben
quelle
quelle
Antworten:
Wenn GPO nicht Ihr Ding ist und Sie Mark Hendersons zweite Option (Batching
shutdown /m
) wählen möchten, können Sie Ihre Arbeit vereinfachen, indem Sie das Herunterfahren im Batch-Modus ausführen, sodass sie parallel und nicht seriell ausgeführt werden. Es erfordert PowerShell seitens der Admin-Station, ist aber sehr geschickt .Dieses Fragment erzeugt so viele Hintergrundjobs , die parallel ausgeführt werden, wie sich Computer in $ ComputerList befinden. Dies kann dazu führen, dass All The Things viel schneller heruntergefahren wird.
quelle
-AsJob
ist das magische Stück hier.Sie können dies mit den Gruppenrichtlinieneinstellungen tun, indem Sie eine neue geplante Aufgabe erstellen, die jede Nacht zu einer bestimmten Zeit ausgeführt wird. Der Befehl für diese Aufgabe sollte lauten
shutdown /r /t 0
. Sie können dieses Gruppenrichtlinienobjekt dann mit der Organisationseinheit oder den Organisationseinheiten verknüpfen, in denen sich Ihre Computer befinden.Möglicherweise möchten Sie die Option "Dieses Programm in zufälligen Intervallen ausführen" verwenden, die zwischen 10 und 15 Minuten liegt. Wenn Sie nicht aufpassen, dass alle Computer gleichzeitig hochgefahren werden, kann dies eine negative Auswirkung auf Ihre Leistungsschalter haben. Möglicherweise möchten Sie auch die Option aktivieren, die Aufgabe nur auszuführen, wenn der Computer x Stunden lang im Leerlauf war, falls jemand einen All-Nighter zieht. Sie möchten die Arbeit einer ganzen Nacht nicht töten, indem Sie jemanden neu starten, der versucht, eine Frist zu setzen.
quelle
Zwei Optionen:
Erstellen Sie eine geplante Aufgabe über ein Gruppenrichtlinienobjekt, das ausgeführt wird,
shutdown /r /f /t 0
odershutdown /g /f /t 0
auf jedem Computer, den Sie neu starten möchten. (shutdown /?
Weitere Informationen finden Sie hier.Erstellen Sie einen Stapel, der
shutdown /m [computer name] /r /f /t 0
auf einem zentralen Computer (möglicherweise dem Domänencontroller?) Ausgeführt wird. Führen Sie für jeden Computer, den Sie neu starten möchten, eine Schleife aus (ändern Sie die[computer name]
). Dies bedeutet, dass der Computer nicht neu gestartet wird, wenn er aus irgendeinem Grund nicht erreichbar ist, und von einem Konto ausgeführt werden muss, das zum Neustarten von Computern berechtigt ist.Sie sollten in der Lage sein, eine Batchdatei zu schreiben, die eine Liste der Computer durchläuft, die aus dem aktiven Verzeichnis abgerufen wurden, und den Befehl ausführt. Ich habe jedoch heute keine Zeit, eine zu schreiben (und ich bin auch nicht bereit, sie zu testen, wenn Ich habe es geschrieben, sonst würde ich mitten am Tag jeden Computer neu starten).
quelle
start cmd /c shutdown /m computer /r /f /t 0
) oder verwenden Sie eine Logik, um zu überprüfen, ob online ist. Andernfalls kann die Verzögerung für Offline-Computer erheblich sein.Der beste Weg, dies zu tun, besteht darin, die Person zu entlassen, die die Idee hat, dass dies erforderlich ist, und das zu tun, was alle anderen Menschen tun - und das nicht.
quelle