web-dev-qa-db-ja.com

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

サーバーの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

このコマンドには、非常に忘れやすいだけでなく、別の重要な欠点があります:タスクを午前2時にスケジュールしますtoday—実行するために午前1時に起きていない限り、あまり使用しません。

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

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

15
Luke Sampson

shutdownコマンド自体には、シャットダウンを/tの遅延パラメーターがあり、シャットダウンを最大10年まで数秒遅らせます。たとえば、シャットダウンを14時間でスケジュールしたい場合は、

shutdown /r /t 50400

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

13
Eamon Nerbonne

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

さらに、 the 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スナップインで作成し、 exportコマンドを使用 を作成することです。

例:

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

私は結局 _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_スクリプト ここ を手動でダウンロードできます。

2
Luke Sampson

私はこれを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
Andy Denley

翌日の指定された時間にプログラムでコンピューターを再起動するための、もう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
1
Marc Cals

/ 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
Manuel Gómez

アップデートのインストール後に再起動するだけの場合は、PSWindowsUpdateモジュールを使用してアップデートをインストールできます。 here からダウンロードできます。インストールしたら、Powershellを開いて次のように入力します。

Get-WuInstall -AcceptAll -AutoReboot
0
Charles Burge

このスクリプトを使用すると、特定の日時に複数のサーバーの再起動をスケジュールできます。

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

0
Charlie