¿Cuál es una buena manera de reiniciar una lista de computadoras con Windows en un dominio de Windows? Suponiendo que el controlador de dominio de Windows no tiene un servicio para hacer esto, haga recomendaciones para un script.
¿Puedo enumerar los nombres de host e iterar a través de los nombres de host para enviar un comando de reinicio a cada uno? ¿Puedo obtener una lista de nombres de host del servidor DHCP que se ejecuta en un cuadro de Windows 2008 en el tiempo de ejecución del script?
Mis lenguajes de scripting preferidos, de los más deseados a los menos deseables, son: PHP, javascript, Bash, Python (sé muy poco), VB (lo sé pero no me gusta)
windows-server-2008
active-directory
vapor accionado
fuente
fuente
Respuestas:
Si GPO no es lo tuyo, y quieres ir con la segunda opción de Mark Henderson (procesamiento por lotes
shutdown /m
), puedes hacer tu trabajo más fácil haciendo un trabajo por lotes del apagado para que lo haga en paralelo en lugar de en serie. Requiere PowerShell por parte de la estación de administración, pero es muy ingenioso .Lo que hace este fragmento es generar tantos trabajos en segundo plano ejecutándose en paralelo como máquinas en $ ComputerList. Esto puede hacer que cerrar All The Things sea mucho más rápido.
fuente
-AsJob
es la parte mágica aquí.Puede hacer esto con las Preferencias de directiva de grupo haciendo una nueva tarea programada que se ejecutará todas las noches a una hora determinada. El comando para esa tarea debería ser
shutdown /r /t 0
. Luego puede vincular ese GPO a la unidad organizativa o unidades organizativas que tienen sus computadoras en ellas.Probablemente desee utilizar la opción "Ejecutar este programa en un intervalo aleatorio" establecida entre 10 y 15 minutos. Tener cada computadora encendida al mismo tiempo puede ser malo para sus interruptores si no tiene cuidado. También es posible que desee marcar la opción para ejecutar la tarea solo si la computadora ha estado inactiva durante x horas, en caso de que alguien esté haciendo una noche entera. No desea matar el trabajo de una noche completa reiniciando a alguien que está tratando de cumplir un plazo.
fuente
Dos opciones:
Cree una tarea programada a través de GPO que se ejecute
shutdown /r /f /t 0
oshutdown /g /f /t 0
en cada máquina que desee reiniciar. (echa un vistazoshutdown /?
para más detalles.Cree un lote que se ejecute
shutdown /m [computer name] /r /f /t 0
desde una computadora central (¿tal vez el controlador de dominio?). Haga un bucle para cada computadora que desea reiniciar (cambie[computer name]
). Esto significa que la computadora no se reiniciará si es inaccesible por alguna razón, y necesita ejecutarse desde una cuenta que tenga los derechos para reiniciar las computadoras.Debería poder escribir un archivo por lotes que recorra una lista de computadoras extraídas del directorio activo y ejecute el comando, sin embargo, no tengo tiempo para escribir uno hoy (y no estoy dispuesto a probarlo incluso si Lo escribí, de lo contrario, me verían obligado a reiniciar la computadora de todos en el medio del día).
fuente
start cmd /c shutdown /m computer /r /f /t 0
) o use alguna lógica para verificar si está en línea, de lo contrario, el retraso para las computadoras fuera de línea puede ser significativo.La mejor manera de hacerlo es despedir a la persona que tiene la idea de que esto es necesario y hacer lo que hacen todas las demás personas, no hacer eso.
fuente