タスクスケジューラを使用してWindowsを自動的に再起動またはシャットダウンするように設定する方法

Windowsで定期的な再起動やシャットダウンを設定するのは、それほど難しいことではありませんが、正しい設定方法を見つけるのはかなり面倒です。サーバーやPCを突然再起動させたい時もあるでしょう。アップデート、メンテナンス、あるいはメモリのクリアなど、様々な理由が考えられます。最も簡単な方法は?Windowsに組み込まれているタスクスケジューラを使うことです。使い方さえ覚えてしまえば驚くほど柔軟で、毎週、毎日、あるいは他のトリガーに基づいて再起動をスケジュール設定できます。さらに、ドメイン内など、複数のマシンでより高度な自動化を行いたい場合は、GPO(グループポリシーオブジェクト)をフル活用できます。

一方、スクリプト作成が得意な方なら、PowerShellには、特に「毎週月曜日の朝に再起動する」といったカスタムタスクを作成したい場合に便利な、便利な機能がいくつかあります。なぜ機能するのかは分かりませんが、スクリプトをタスクに組み込むことで、多くの手間を省くことができます。また、多数のコンピューターを管理している場合は、ドメイン全体のポリシーを設定することで、作業を大幅に効率化できます。いずれにせよ、これらのアプローチは、手動でクリック操作を繰り返すことなく、システムを整理するのに役立ちます。

Windowsの自動再起動またはシャットダウンを修正する方法

Windows タスク スケジューラで自動再起動 (シャットダウン) タスクを作成する

これはおそらく最も一般的な方法で、自動化できる範囲が広くなると、かなりワクワクします。「実行」ボックス( )に入力してタスクスケジューラを開き、「アクション」→ 「基本タスクの作成」で新しいタスクを開始します。「RebootMonday」や「Weekly Restart」など、お好きな名前を付けてください。taskschd.mscWin + R

次に、スケジュールを設定します。例えば、毎週月曜日の午前3時など、都合の良い時間を指定できます。次に、アクションタブで「プログラムを開始」を選択します。ここでは、 を指定します%SYSTEMROOT%\System32\shutdown.exe

引数には、 のような形式を使用します/r /f /t 120 /d p:0:0 /c "Auto-reboot on Mondays. To cancel, run: shutdown.exe /a"。基本的に、これは強制的に再起動し ( /r)、すべてを強制的に終了し ( /f)、2分間の遅延 ( /t 120) を設定し、計画シャットダウンの理由をログに記録します。その後、システムはユーザーへの通知とともに再起動します。

誰もログインしていない場合でもタスクが実行されるようにするには、タスクのプロパティを開き、「ユーザーがログインしているかどうかに関係なく実行する」にチェックを入れ、ユーザーを に変更しますSYSTEM。また、「最上位の権限で実行する」も有効にします。設定によっては、特にPCがスリープ状態の場合、予期せぬ動作をする可能性があります。そのため、 「条件」タブの「このタスクを実行するためにコンピューターをスリープ解除する」オプションを有効にしてください。Wake-on-LAN は、正しく設定されていれば、リモートでマシンの電源をオンにするのにも役立ちます。

PowerShell を使ってさらに細かく制御する

クリックするのが面倒?大丈夫。PowerShellを使えば、このすべてをスクリプト化できます。コツは、次のようなコマンドを使ってスケジュールされたタスクを作成することです。

$taskName = "WeeklyAutoReboot" $taskDescription = "Automatically reboots the server every Monday at 04:00 AM" $action = New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "/r /f /t 120 /d p:0:0 /c `"Auto-reboot on Mondays. To cancel, run: shutdown.exe /a"" $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 4:00am $principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -RunLevel Highest Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Principal $principal 

このコマンドはタスクを作成し、SYSTEMとして実行するように設定し、毎週月曜日の朝に実行するようにスケジュールします。必要に応じて曜日と時間を調整してください。少し奇妙ですが、一部のマシンでは、最初にPowerShellを管理者として実行する必要がある場合があります。最初は失敗する可能性がありますが、もう一度試してみてください。Windowsは権限に関して厳しい場合があるからです。

ドメイン全体のグループポリシー (GPO) によるスケジュール

パッチ適用やメンテナンス後など、ADドメイン内の多数のコンピューターを再起動する必要がある場合は、GPOが役立ちます。gpmc.msc を開き新しいGPOを作成します。対象のコンピューターを含むOUにリンクします。次に、「コンピューターの構成」>「基本設定」>「コントロールパネルの設定」>「スケジュールされたタスク」に移動して編集します。基本的には、同じシャットダウンコマンドを実行する新しいスケジュールされたタスクを作成しますが、毎週、毎日など、定期的にトリガーするように設定してください。

タスクがSYSTEM権限で実行されることを確認し、適切なスケジュールを設定し、「最上位の権限で実行」オプションを有効にしてください。「アクション」タブで、選択した引数を指定してタスクを指定してください。コマンドプロンプトで「gpupdate /force」shutdown.exeを実行して対象マシンのGPOを更新するか、ポリシーの更新を待ってください。

重要なサーバーを自動的に再起動したくない場合は、セキュリティフィルタリングや委任を使ってGPOを微調整できます。これはかなり強力な手段ですが、適切な人が使えば非常に便利です。

あるいは、別のタスク(例えばバックアップ完了後)の終了後に再起動を実行したい場合は、タスクをトリガーにリンクするか、特定のイベントで再起動を実行するようにスクリプトを作成する方法があります。これは少し複雑になりますが、少し調べれば実現可能です。