Un bon moyen de redémarrer tous les ordinateurs d'un domaine Windows chaque nuit

9

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)

à vapeur
la source
8
retournez le disjoncteur. Je blague.
gravyface
cela provoquerait un arrêt, j'ai besoin d'un redémarrage.
propulsé par la vapeur
@JM - pas s'ils sont définis sur "Reprendre l'état d'alimentation précédent" dans le BIOS.
Fake Name
@Fake Name - cela ressemble à beaucoup de travail
propulsé à la vapeur

Réponses:

15

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 .

foreach ($ComputerName in $ComputerList) {
    invoke-command -AsJob -ScriptBlock {
        params($ComputerName)
        shutdown /m $ComputerName /r /f /t 0
    } -ArgumentList $ComputerName
}

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.

sysadmin1138
la source
2
C'est une solution intéressante - si vous avez beaucoup d'ordinateurs à redémarrer, je recommande fortement cette solution car elle exécutera les commandes d'arrêt en parallèle.
Richard West
2
C'est -AsJoble morceau magique ici.
jscott
Je suis curieux de savoir pourquoi vous utilisez la commande "shutdown" plutôt que l'applet de commande Restart-Computer.
Charles Burge
@CharlesBurge Cela a été répondu il y a 5 ans et la PS3 n'a pas été largement déployée. Cela montre également la technique d'exécution des commandes sur d'autres systèmes. En 2017, nous ferions tout simplement dans PowerShell et ne nous soucierions pas des commandes. Le temps change.
sysadmin1138
7

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.

MDMarra
la source
Je ne suis pas familier avec la définition de tâches planifiées avec GPO, donc je me demande: si une machine est déplacée d'une unité d'organisation à une autre sans que la tâche ne soit définie, la tâche de délestage disparaîtra-t-elle ou restera-t-elle après son application initiale?
MaCuban
6

Deux options:

  1. Créez une tâche planifiée via GPO qui s'exécute shutdown /r /f /t 0ou shutdown /g /f /t 0sur chaque machine que vous souhaitez redémarrer. (consultez shutdown /?pour plus de détails.

  2. Créez un lot qui s'exécute à shutdown /m [computer name] /r /f /t 0partir 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).

Mark Henderson
la source
De plus, il existe une commande psshutdown qui peut également être exécutée dans un fichier batch, faisant partie de la suite sysinternals ...
Bart Silverstrim
J'ai utilisé à la fois 1 et 2. Maintenant, je m'amuse avec Powershell. Si vous utilisez # 2, considérez le script principal engendrant un processus distinct pour chaque ordinateur (par exemple 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.
jscott
4

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.

TomTom
la source
La redirection de dossiers semble lier des ressources lorsque les gens restent connectés pendant la nuit. Je suppose que je pourrais essayer de mettre en place une déconnexion de masse au lieu d'un redémarrage en masse, mais le redémarrage semble résoudre autant de problèmes. Les gens passent des semaines ou des mois sans redémarrer. Je n'investis généralement pas beaucoup de temps pour apprendre la bonne façon d'exécuter des systèmes Windows, car ce n'est pas mon travail principal. Que recommandez-vous?
2011
1
Ah non. Des tonnes d'entreprises n'exigent pas que leurs employés reboiotent - vous pensez qu'ils n'ont jamais utilisé la redirection de dossiers? Je suggère de régler le problème à portée de main. Personnellement, je serais énervé si j'étais déconnecté de mon poste de travail tous les jours - je laisse souvent les travaux s'exécuter pendant la nuit. Votre paresse peut coûter beaucoup de temps aux gens - faites votre travail correctement ou embauchez quelqu'un qui le fait.
TomTom
Eh bien, faire mon travail correctement signifie ne pas passer trop de temps à traîner notre petit système Windows.
2011 à vapeur à 6h28
Vous ne savez pas ce que vous faites? ;) Je congédie des gens en disant qu'ils sont incompétents dans leur travail, quelle que soit leur performance.
TomTom
Sysadmin est un travail secondaire que je fais pour ma famille pour les aider. Si j'avais un temps infini, je lirais plus de livres sur les fenêtres et autres tangentes. Mais ma meilleure façon de gagner de l'argent est de m'en tenir aux logiciels Web. Je pense que votre réponse n'était pas du tout dans l'esprit d'offrir une solution technique à la question que j'ai posée.
2011