web-dev-qa-db-fra.com

Comment planifier un redémarrage du serveur à partir de la ligne de commande sous Windows 2012?

Je souhaite planifier un redémarrage unique du serveur, par ex. pour terminer l'installation des mises à jour tôt le matin. Comment puis-je le faire à partir de la ligne de commande sur Windows 2012?

Sur Windows 2008, j'aurais utilisé la commande at,

at 2am shutdown -r -f -c "restart"

et pris le reste de l'après-midi.

Mais sur Windows 2012, l'exécution de cette commande me dit que

The AT command has been deprecated. Please use schtasks.exe instead.

Ainsi, la commande équivalente avec schtasks.exe pourrait être

schtasks /create /sc once /tn restart /tr "shutdown - r -f ""restart""" /st 02:00

En plus d'être très oubliable, cette commande a un autre inconvénient important : elle planifie la tâche à 2h du matin aujourd'hui - pas très utile, sauf si je suis réveillé à 1h du matin pour l'exécuter.

Selon l'aide de schtasks.exe, le /sd le commutateur de réglage de la date de début n'est pas applicable avec /sc once. Donc, même si je voulais taper la date de demain au format mm/jj/aaaa - et je ne le fais pas - je ne peux pas faire ça.

La seule solution possible que j'ai trouvée est ici , où Kevin Traas suggère de créer un fichier de commandes pour créer une tâche planifiée juste avant minuit qui attend quelques minutes, puis crée une autre tâche planifiée pour exécuter la commande que vous voulez réellement exécuter. Intelligent, mais loin d'être aussi pratique que at.

15
Luke Sampson

La commande shutdown elle-même a un paramètre de délai /t qui retarde un arrêt de quelques secondes jusqu'à 10 ans. Si vous souhaitez planifier un arrêt dans 14 heures, par exemple, vous pouvez exécuter

shutdown /r /t 50400

Vous pouvez également ajouter une raison avec le /d paramètre ou un commentaire avec /c; courir shutdown /? pour plus de détails.

13
Eamon Nerbonne

Malgré la documentation, le /SD le paramètre semble compatible avec le /SC ONCE. La tâche est créée avec succès pour s'exécuter à la date indiquée, à l'heure indiquée. (Testé sur W8 et W7)

De plus, la documentation XP pour schtasks.exe va jusqu'à dire que le /SD le paramètre est requis lors de l'utilisation de /SC ONCE, donc j'imagine qu'il existe un bon nombre de scripts utilisant la combinaison.

Exemple:

C:\Users\Mitch>schtasks /create /sc once /tn restart /tr "shutdown -r -f ""restart""" /st 23:00 /sd 2013-06-13
SUCCESS: The scheduled task "restart" has successfully been created.

C:\Users\Mitch>

Si aller à l'encontre de la documentation ne vous convient pas, envisagez de générer le fichier XML directement ( le schéma est ici ), qui est définitivement pris en charge et prend définitivement en charge une tâche planifiée pour s'exécuter une fois à une date ultérieure. Un moyen simple d'obtenir le fichier approprié est de le créer dans le composant logiciel enfichable Planificateur de tâches mmc et tilisez la commande d'exportation .

Exemple:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.Microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2013-06-12T21:20:51.004181</Date>
    <Author>FOOBAR\Mitch</Author>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <StartBoundary>2013-06-13T22:20:29</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>FOOBAR\Mitch</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>LeastPrivilege</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>Your command here</Command>
    </Exec>
  </Actions>
</Task>

Commande à importer:

schtasks /CREATE /TN "Task Name" /XML filename.xml
9
Mitch

J'ai fini par créer runat.ps1 pour reproduire certaines des fonctionnalités simples de at, en incorporant la sagesse de la réponse de Mitch.

La syntaxe est runat (time) (command), par exemple.

runat 2am shutdown -r -f -c "restarting the server"
runat 10:15 msg * it`'s 10:15 everyone!

Si vous aussi, vous êtes nostalgique du bon vieux temps où vous n'aviez pas à taper ...

schtasks /create /ru system /rl highest /sc once /tn restart /tr shutdown -r -f -c \"restarting the server\" /st 02:00 /sd 06/15/2013

... alors vous pouvez l'installer en exécutant cette commande powershell:

iex (new-object net.webclient).downloadstring('https://Gist.github.com/lukesampson/5779205/raw/install.ps1');install runat https://Gist.github.com/lukesampson/5778559/raw

Ou vous pouvez télécharger manuellement le script runat.ps1ici .

2
Luke Sampson

Je l'ai utilisé dans un script pour 2012 R2 et fonctionne bien; Il créera une tâche quotidienne qui redémarrera le serveur à 4h30.

schtasks /create /ru system /rl highest /sc DAILY /tn restart /tr "shutdown /r /f /c "Restarting" /st 04:30

Veuillez vous assurer de l'exécuter à partir d'une invite CMD avec des privilèges administratifs.

Andy

1
Andy Denley

Juste un autre script PowerShell pour redémarrer par programme l'ordinateur le lendemain à une heure spécifiée

$tomorrowDate = (get-date).AddDays(1).ToString("dd/mm/yyyy")

schtasks /delete /tn restart /f
schtasks /create /sc once /ru MyDomain\administrator /rp /tn restart /tr "shutdown -r -f" /st 07:13 /sd $tomorrowDate
1
Marc Cals

Je suggère d'utiliser la commande schtasks avec le paramètre/f.

En utilisant/f, s'il existe une tâche du même nom, elle est modifiée.

Il est très utile pour déployer des tâches via des scripts.

Un exemple complet d'un redémarrage du serveur de planification:

schtasks /create /ru system /rl highest /sc DAILY /tn Reinicio /tr "shutdown /r /f /t 0 /c "Reinicio"" /st 22:30 /F

Extrait de: http://www.sysadmit.com/2016/09/windows-programar-apagado-o-reinicio-automatico.html

0
Manuel Gómez

Si l'objectif est simplement de redémarrer après l'installation des mises à jour, vous pouvez utiliser le module PSWindowsUpdate pour installer les mises à jour. Vous pouvez le télécharger depuis ici . Une fois installé, il suffit d'ouvrir Powershell et de taper

Get-WuInstall -AcceptAll -AutoReboot
0
Charles Burge

Ce script vous permet de planifier le redémarrage de plusieurs serveurs à une date/heure spécifique.

https://gallery.technet.Microsoft.com/Schedule-restart-of-2c1131fb?redir=

0
Charlie