Windows PCを一定時間後に自動でシャットダウンまたは再起動したい場面は意外と多くあります。PowerShellを使えば、スケジューラを使わずに簡単にタイマー付きで処理を実行できます。この記事では、PowerShellによってPCのシャットダウンや再起動を指定時間後に行う方法を紹介します。
シャットダウンをタイマーで予約する
PowerShellではStart-SleepとStop-Computerコマンドレットを組み合わせることで、任意の時間後にシャットダウンを実行できます。
Start-Sleep -Seconds 3600
Stop-Computer -Force
上記は、1時間(3600秒)待機した後に強制的にシャットダウンを行うスクリプトです。-Forceオプションを指定することで、実行中のアプリケーションがあっても強制的にシャットダウンされます。
再起動をタイマーで予約する
再起動を行いたい場合は、Restart-Computerを使います。こちらも同様にStart-Sleepで待機時間を調整します。
Start-Sleep -Seconds 1800
Restart-Computer -Force
この例では、30分(1800秒)後に再起動を強制的に実行します。
時間の指定を柔軟にしたい場合
ユーザー入力を受けて時間を指定できるようにすることも可能です。以下は、対話式に秒数を入力させる例です。
$seconds = Read-Host "何秒後にシャットダウンしますか?"
Start-Sleep -Seconds $seconds
Stop-Computer -Force
秒数だけでなく、分単位での指定を希望する場合は、入力を変換して処理できます。
$minutes = Read-Host "何分後に再起動しますか?"
$seconds = [int]$minutes * 60
Start-Sleep -Seconds $seconds
Restart-Computer -Force
管理者権限での実行が必要
Stop-ComputerやRestart-Computerを実行するためには、PowerShellを管理者として実行する必要があります。通常の権限ではアクセスが拒否されるため注意してください。
スクリプトとして保存しておく
以下のようにスクリプトを.ps1ファイルとして保存しておくと、使いたいときにすぐ実行できて便利です。
# shutdown_timer.ps1
$minutes = 10
Start-Sleep -Seconds ($minutes * 60)
Stop-Computer -Force
このファイルを右クリックして「PowerShellで実行」すれば、10分後に自動でシャットダウンが行われます。