Me gustaría programar un reinicio del servidor por única vez, por ejemplo, para terminar de instalar las actualizaciones temprano en la mañana. ¿Cómo puedo hacer esto desde la línea de comandos en Windows 2012?
En Windows 2008, hubiera usado el atcomando,
at 2am shutdown -r -f -c "restart"
y tomé el resto de la tarde libre.
Pero en Windows 2012, ejecutar este comando me dice que
The AT command has been deprecated. Please use schtasks.exe instead.
Entonces, el comando equivalente con schtasks.exe podría ser
schtasks /create /sc once /tn restart /tr "shutdown - r -f ""restart""" /st 02:00
Además de ser muy olvidable, este comando tiene otro inconveniente importante : programa la tarea para las 2 de la mañana de hoy; no sirve de mucho a menos que esté despierto a la 1 de la mañana para ejecutarlo.
Según la ayuda de schtasks.exe, el modificador /sdpara configurar la fecha de inicio no es aplicable con /sc once. Entonces, incluso si quisiera escribir la fecha de mañana en formato mm / dd / aaaa, y no lo hago, no puedo hacer esto.
La única solución posible que he encontrado es aquí , donde Kevin Traas sugiere crear un archivo por lotes para crear una tarea programada justo antes de la medianoche que espere un par de minutos y luego cree otra tarea programada para ejecutar el comando que realmente desea ejecutar. Inteligente, pero de ninguna manera tan conveniente como at.
fuente

Respuestas:
El
shutdowncomando en sí tiene un parámetro de retraso/tque retrasa el apagado durante varios segundos hasta 10 años. Por ejemplo, si desea programar un apagado en 14 horas, puede ejecutarTambién puede agregar un motivo con el
/dparámetro o un comentario con/c; correshutdown /?por detalles.fuente
A pesar de la documentación, el
/SDparámetro parece ser compatible con el/SC ONCE. La tarea se creó correctamente para ejecutarse en la fecha indicada, a la hora indicada. (Probado en W8 y W7)Además, la documentación de XP
schtasks.exeva tan lejos como para decir/SDque se requiere el parámetro cuando se usa/SC ONCE, así que imagino que hay una buena cantidad de scripts que usan la combinación.Ejemplo:
Si ir en contra de la documentación no le sienta bien, considere generar el archivo XML directamente (el esquema está aquí ), que definitivamente es compatible y definitivamente es compatible con una tarea programada para ejecutarse una vez en una fecha futura. Una manera fácil de obtener el archivo adecuado es crearlo en el
mmccomplemento Programador de tareas y usar el comando de exportación .Ejemplo:
Comando para importar:
fuente
/sdser apoyado. Eso también es interesante sobre la importación de XML, aunque personalmente no me importa ir en contra de la documentación. Entonces, al menos esto es posible, solo mucho, mucho más difícil de lo que solía serat./sdno funciona con/sc onceWindows Server 2008. Resulta enERROR: Incorrect Start Date./SD 06/14/2013.Terminé creando
runat.ps1para replicar algunas de las características simples deat, incorporando la sabiduría de la respuesta de Mitch.La sintaxis es
runat (time) (command), por ejemploSi usted también siente nostalgia por los viejos tiempos en los que no tenía que escribir ...
... entonces puede instalarlo ejecutando este comando de PowerShell:
O puede descargar manualmente el
runat.ps1script aquí .fuente
Usé esto en un script para 2012 R2 y funciona bien; Creará una tarea diaria que reinicia el servidor a las 4:30 a.m.
Asegúrese de ejecutar esto desde un indicador de CMD con privilegios administrativos.
Andy
fuente
Solo otro script de PowerShell para reiniciar programáticamente la computadora al día siguiente a la hora especificada
fuente
Sugiero usar el comando schtasks con el parámetro / f.
Usando / f, si hay una tarea con el mismo nombre, se modifica.
Es muy útil para implementar tareas mediante secuencias de comandos.
Un ejemplo completo de reinicio del servidor de programación:
Extraído de: http://www.sysadmit.com/2016/09/windows-programar-apagado-o-reinicio-automatico.html
fuente
Si el objetivo es simplemente reiniciar después de instalar las actualizaciones, puede usar el módulo PSWindowsUpdate para instalar las actualizaciones. Puedes descargarlo desde aquí . Una vez instalado, solo abra Powershell y escriba
fuente
Este script le permite programar el reinicio de varios servidores en una fecha / hora específica.
https://gallery.technet.microsoft.com/Schedule-restart-of-2c1131fb?redir=0
fuente