【PowerShell】スケジュールタスクを自動作成・削除・確認する方法

【PowerShell】スケジュールタスクを自動作成・削除・確認する方法 PowerShell

Windowsで定期的な処理を自動化したいとき、スケジュールタスクの活用は欠かせません。バックアップ処理やログの整理、スクリプトの定期実行など、様々な用途に対応できます。PowerShellを使えば、これらのスケジュールタスクを手動操作することなくスクリプトから自動で作成・削除・確認することが可能です。この記事では、タスクスケジューラに登録されたタスクの管理をPowerShellで効率化する方法を紹介します。

スケジュールタスクをPowerShellで作成する方法

スケジュールタスクを作成するには、まずアクションとトリガー、そしてタスクの設定を準備する必要があります。以下のサンプルでは、毎日午前8時にC:\Scripts\MyTask.ps1を実行するタスクを作成します。

$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File 'C:\Scripts\MyTask.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At 8:00AM
Register-ScheduledTask -TaskName "MyDailyTask" -Action $action -Trigger $trigger -Description "毎朝8時にスクリプトを実行するタスク"

このスクリプトを実行すると、指定された時間にPowerShellスクリプトが自動的に起動するようスケジューラに登録されます。

スケジュールタスクを削除する方法

不要になったスケジュールタスクは、以下のようにして削除できます。タスク名を正確に指定することで、登録されているタスクを完全に消去します。

Unregister-ScheduledTask -TaskName "MyDailyTask" -Confirm:$false

このコマンドは確認メッセージなしで即時削除を実行します。必要であれば-Confirm:$trueとして確認を表示させることも可能です。

登録済みタスクを確認する方法

現在登録されているスケジュールタスクを確認するには、Get-ScheduledTaskコマンドレットを使います。特定のタスク名を指定することもできますし、すべてのタスクを一覧表示することもできます。

Get-ScheduledTask

特定のタスクだけを表示したい場合は、次のようにフィルタを使います。

Get-ScheduledTask -TaskName "MyDailyTask"

タスクの詳細(トリガー内容、実行アクションなど)を確認したいときは、次のコマンドで設定内容を取得できます。

Get-ScheduledTaskInfo -TaskName "MyDailyTask"

補足 管理者権限の必要性とエラーハンドリング

スケジュールタスクの作成・削除など一部の操作には管理者権限が必要です。PowerShellを「管理者として実行」してから操作することを忘れないようにしましょう。また、存在しないタスクを削除しようとするとエラーになりますので、削除前にGet-ScheduledTaskで存在確認をするのが安全です。

まとめ

PowerShellを使えば、Windowsのスケジュールタスクをコードで自在に管理できます。手動でGUIを操作する手間が省けるだけでなく、スクリプトとして管理することで再利用性や一貫性も向上します。定期実行処理を自動化したい場面では、ぜひこの手法を取り入れて運用の効率化を図ってください。