Windows 2012のコマンドラインからサーバーの再起動をスケジュールするにはどうすればよいですか?


15

更新を早朝にインストールするなど、サーバーの1回限りの再起動をスケジュールしたいと思います。Windows 2012のコマンドラインからこれを行うにはどうすればよいですか?

Windows 2008では、atコマンドを使用していましたが、

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

午後の残りを休みました。

しかし、Windows 2012では、このコマンドを実行すると次のことがわかります

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

したがって、schtasks.exeの同等のコマンドは

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

非常に忘れやすいこととは別に、このコマンドにはもう1つの重要な欠点があります。今日の午前2時にタスクをスケジュールします。

schtasks.exeのヘルプによると、/sd開始日を設定するためのスイッチはには適用されません/sc once。そのため、明日の日付をmm / dd / yyyy形式で入力したかったのに、そうしなかったとしても、これはできません。

私が見つけた唯一の解決策はここにあります.Kevin Traasは、数分待つ真夜中の直前にスケジュールされたタスクを作成するバッチファイルを作成し、次に実際に実行するコマンドを実行する別のスケジュールされたタスクを作成することを提案しています。賢いですが、ほど便利な場所はありませんat


@Lijoのリンクには、再起動のスケジュール方法に関する情報は含まれていません。
ルークサンプソン

これは、ATを使用できないschtaskに置き換えるだけのまったくの愚かさです。なぜ彼らは両方を作ることができなかったのですか?ジャーク!
midenok

回答:


13

shutdownコマンド自体は、遅延パラメータ持つ/t10歳までの秒数のためのシャットダウンを遅らせます。たとえば、14時間以内にシャットダウンをスケジュールする場合、次のように実行できます。

shutdown /r /t 50400

/dパラメータを使用して理由を追加するか、/c;を使用してコメントを追加することもできます。shutdown /?詳細を実行します。


9

ドキュメントにもかかわらず、/SDパラメータはと互換性があるよう/SC ONCEです。指定された日付、指定された時間に実行するタスクが正常に作成されます。(W8およびW7でテスト済み)

さらに、のXPドキュメントでschtasks.exe/SD、を使用する場合にパラメーターが必要であると言われている/SC ONCEので、この組み合わせを使用するスクリプトの数はかなり多いと思います。

例:

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>

ドキュメントに反することがうまくいかない場合は、XMLファイルを直接生成することを検討してください(スキーマはここにあります)。適切なファイルを取得する簡単な方法は、タスクスケジューラmmcスナップインで作成し、エクスポートコマンド使用することです。

例:

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

インポートするコマンド:

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

/sdサポートについてのヒントをありがとう。個人的にはドキュメントに反することは気にしませんが、XMLインポートについても興味深いことです。そのため、少なくともこれは可能atです。以前よりもはるかに困難です。
ルークサンプソン

Mildy興味深い:Windows Server 2008では動作/sdしません/sc once。その結果ERROR: Incorrect Start Date.
ルークサンプソン

4
うーん...さらに、Server 2008 SP2とServer 2008 R2を問題なくテストしました。日付形式はローカルの日付/時刻形式に基づいており、先行ゼロが必要であることに注意してください。デフォルトのEN-usインストールでは、これによりのようなフォーマットになり/SD 06/14/2013ます。
ミッチ

2

私はrunat.ps1いくつかのシンプルな機能を複製するために作成しましたat、ミッチの答えから得た知恵を取り入れて。

構文はrunat (time) (command)、たとえば

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

あなたも、タイプする必要がなかった古き良き時代を懐かしく思うなら...

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

...次に、この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

または、ここからrunat.ps1スクリプトを手動でダウンロードできます


1
+1これは非常に役立つスクリプトです...これは間違いなく私のお気に入りです。
ミッチ

1

2012 R2のスクリプトでこれを使用し、うまく機能しています。サーバーを再起動する毎日のタスクを作成します@ 4:30 am

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

管理者権限でCMDプロンプトからこれを実行することを確認してください。

アンディ


1

翌日、指定された時間にコンピューターをプログラムで再起動する別のPowerShellスクリプト

$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

0

/ fパラメーターを指定してschtasksコマンドを使用することをお勧めします。

/ fを使用すると、同じ名前のタスクがある場合、それが変更されます。

スクリプトを介してタスクを展開するのに非常に便利です。

スケジュールサーバーの再起動の完全な例:

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

抽出元:http : //www.sysadmit.com/2016/09/windows-programar-apagado-o-reinicio-automatico.html


0

更新プログラムのインストール後に単純に再起動することが目標である場合、PSWindowsUpdateモジュールを使用して更新プログラムをインストールできます。こちらからダウンロードできます。インストールしたら、Powershellを開いて入力するだけです

Get-WuInstall -AcceptAll -AutoReboot

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.