it-swarm.com.de

Wie kann ich einen Neustart des Servers über die Befehlszeile unter Windows 2012 planen?

Ich möchte einen einmaligen Neustart des Servers planen, z. um die Installation der Updates am frühen Morgen abzuschließen. Wie kann ich dies über die Befehlszeile unter Windows 2012 tun?

Unter Windows 2008 hätte ich den Befehl at verwendet.

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

und nahm den Rest des Nachmittags frei.

Unter Windows 2012 sagt mir das Ausführen dieses Befehls dies

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

Der entsprechende Befehl mit schtasks.exe könnte also sein

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

Dieser Befehl ist nicht nur sehr unvergesslich, sondern hat auch einen weiteren wichtigen Nachteil : Er plant die Aufgabe für 2 Uhr morgens heute - nützt nicht viel, es sei denn, ich bin um 1 Uhr morgens wach, um es auszuführen.

Laut der Hilfe für schtasks.exe wird das /sd Schalter zum Einstellen des Startdatums gilt nicht für /sc once. Selbst wenn ich das morgige Datum im Format MM/TT/JJJJ eingeben wollte - und das tue ich nicht -, kann ich das nicht tun.

Die einzig mögliche Lösung, die ich gefunden habe, ist hier , wo Kevin Traas vorschlägt, eine Batchdatei zu erstellen, um eine geplante Aufgabe kurz vor Mitternacht zu erstellen, die einige Minuten wartet, und dann eine andere geplante Aufgabe zu erstellen, um den Befehl auszuführen dass du eigentlich laufen willst. Clever, aber bei weitem nicht so bequem wie at.

15
Luke Sampson

Der Befehl shutdown selbst hat einen Verzögerungsparameter /t verzögert das Herunterfahren um einige Sekunden bis zu 10 Jahren. Wenn Sie beispielsweise ein Herunterfahren in 14 Stunden planen möchten, können Sie es ausführen

shutdown /r /t 50400

Sie können auch einen Grund mit dem /d Parameter oder ein Kommentar mit /c; Lauf shutdown /? für Details.

13
Eamon Nerbonne

Trotz der Dokumentation scheint der Parameter /SD Mit dem Parameter /SC ONCE Kompatibel zu sein. Die Aufgabe wurde erfolgreich erstellt und zum angegebenen Datum zum angegebenen Zeitpunkt ausgeführt. (Getestet auf W8 und W7)

Außerdem geht die XP Dokumentation für schtasks.exe so weit, dass der Parameter /SD Bei Verwendung von /SC ONCE, also stelle ich mir vor, dass es eine ganze Reihe von Skripten gibt, die diese Kombination verwenden.

Beispiel:

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>

Wenn Sie nicht gut mit der Dokumentation umgehen können, sollten Sie die XML-Datei direkt generieren ( Schema ist hier ). Dies wird definitiv unterstützt und unterstützt definitiv eine Aufgabe, deren Ausführung zu einem späteren Zeitpunkt geplant ist. Eine einfache Möglichkeit, die richtige Datei zu erhalten, besteht darin, sie im Taskplaner mmc zu erstellen und verwenden Sie den Exportbefehl .

Beispiel:

<?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>

Befehl zum Importieren:

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

Am Ende habe ich runat.ps1 erstellt, um einige der einfachen Funktionen von at zu replizieren und die Weisheit aus Mitch 'Antwort zu berücksichtigen.

Die Syntax ist runat (time) (command), z.

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

Wenn auch Sie nostalgisch sind für die guten alten Zeiten, als Sie nicht tippen mussten ...

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

... dann können Sie es installieren, indem Sie diesen Powershell-Befehl ausführen:

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

Oder Sie können das Skript runat.ps1 Manuell herunterladen hier .

2
Luke Sampson

Ich habe dies in einem Skript für 2012 R2 verwendet und funktioniert gut. Es wird eine tägliche Aufgabe erstellt, die den Server um 4:30 Uhr neu startet

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

Stellen Sie sicher, dass Sie dies über eine CMD-Eingabeaufforderung mit Administratorrechten ausführen.

Andy

1
Andy Denley

Nur ein weiteres Powershell-Skript, mit dem der Computer am nächsten Tag zur angegebenen Zeit programmgesteuert neu gestartet werden kann

$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

Ich schlage vor, den Befehl schtasks mit dem Parameter/f zu verwenden.

Wenn mit/f eine Aufgabe mit demselben Namen vorhanden ist, wird sie geändert.

Es ist sehr nützlich, um Aufgaben über Skripte bereitzustellen.

Ein vollständiges Beispiel für einen Neustart des Zeitplanservers:

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

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

0
Manuel Gómez

Wenn das Ziel einfach darin besteht, nach der Installation von Updates neu zu starten, können Sie die Updates mit dem PSWindowsUpdate-Modul installieren. Sie können es von hier herunterladen. Nach der Installation öffnen Sie einfach Powershell und geben Sie ein

Get-WuInstall -AcceptAll -AutoReboot
0
Charles Burge

Mit diesem Skript können Sie den Neustart mehrerer Server zu einem bestimmten Datum/einer bestimmten Uhrzeit planen.

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

0
Charlie