Quelle est la bonne façon de redémarrer une liste d'ordinateurs Windows sur un domaine Windows? En supposant que le contrôleur de domaine Windows ne dispose pas d'un service pour ce faire, veuillez faire des recommandations pour un script.
Puis-je répertorier les noms d'hôtes et répéter les noms d'hôtes pour envoyer une commande de redémarrage à chacun? Puis-je obtenir une liste des noms d'hôte du serveur DHCP exécuté dans une boîte Windows 2008 lors de l'exécution du script?
Mes langages de script préférés du plus au moins souhaitable sont: PHP, javascript, Bash, Python (en savoir très peu), VB (le savoir mais ne pas l'aimer)
windows-server-2008
active-directory
à vapeur
la source
la source
Réponses:
Si le GPO n'est pas votre truc et que vous souhaitez utiliser la deuxième option de Mark Henderson (traitement par lots
shutdown /m
), vous pouvez rendre votre travail plus facile en différant l'arrêt par lots afin qu'il les fasse en parallèle plutôt qu'en série. Cela nécessite PowerShell de la part de la station d'administration, mais c'est très astucieux .Ce fragment fait apparaître autant de tâches d'arrière-plan s'exécutant en parallèle qu'il y a de machines dans $ ComputerList. Cela peut rendre la fermeture de All The Things beaucoup plus rapide.
la source
-AsJob
le morceau magique ici.Vous pouvez le faire avec les préférences de stratégie de groupe en créant une nouvelle tâche planifiée qui s'exécutera chaque nuit à une certaine heure. La commande pour cette tâche devrait être
shutdown /r /t 0
. Vous pouvez ensuite lier cet objet de stratégie de groupe à l'unité d'organisation ou aux unités d'organisation contenant vos ordinateurs.Vous souhaiterez probablement utiliser l'option "Exécuter ce programme à un intervalle aléatoire" définie entre 10 et 15 minutes. Avoir chaque ordinateur sous tension en même temps peut être mauvais pour vos disjoncteurs si vous ne faites pas attention. Vous pouvez également vouloir cocher l'option pour exécuter la tâche uniquement si l'ordinateur a été inactif pendant x heures, au cas où quelqu'un tirerait une nuit blanche. Vous ne voulez pas tuer une nuit entière de travail en redémarrant quelqu'un qui essaie de respecter un délai.
la source
Deux options:
Créez une tâche planifiée via GPO qui s'exécute
shutdown /r /f /t 0
oushutdown /g /f /t 0
sur chaque machine que vous souhaitez redémarrer. (consultezshutdown /?
pour plus de détails.Créez un lot qui s'exécute à
shutdown /m [computer name] /r /f /t 0
partir d'un ordinateur central (peut-être le contrôleur de domaine?). Bouclez-le pour chaque ordinateur que vous souhaitez redémarrer (modifiez le[computer name]
). Cela signifie que l'ordinateur ne sera pas redémarré s'il est inaccessible pour une raison quelconque et doit être exécuté à partir d'un compte qui a les droits de redémarrer les ordinateurs.Vous devriez être en mesure d'écrire un fichier de commandes qui parcourt une liste d'ordinateurs extraits du répertoire actif et exécute la commande, mais je n'ai pas le temps d'en écrire un aujourd'hui (et je ne suis pas prêt à le tester même si Je l'ai écrit, sinon je serais grillé pour redémarrer l'ordinateur de tout le monde en milieu de journée).
la source
start cmd /c shutdown /m computer /r /f /t 0
) ou en utilisant une logique pour vérifier s'il est en ligne, sinon le délai pour les ordinateurs hors ligne peut être important.La meilleure façon de le faire est de renvoyer la personne qui a l'idée que cela est nécessaire et de faire ce que font toutes les autres personnes - pas de le faire.
la source