使用 schtasks 在 Windows 中排程任務 一旦你掌握了它,就會不禁納悶自己為什麼多年來都要手動完成那些重複性的工作。例如,在不尋常的時間進行備份、每天早上運行腳本、服務中斷後需要重新啟動……所有這些都可以用一個簡單的命令實現自動化。
schtasks 指令 是 命令列介面 Windows 工作排程器可讓您在本機電腦和網路上的遠端電腦上建立、修改、列出、執行和刪除任務。讓我們透過清晰的範例和對每個關鍵參數的解釋,深入了解它的功能,以便您能夠充分利用它,從簡單的自動化操作到涉及使用者、權限和遠端電腦的高級場景。
什麼是 schtasks?它能為你做什麼?

Schtasks.exe 是控制台工具 Windows 使用該協定與工作規劃程式通訊。借助該協議,您可以定義一個程序, 腳本 該命令將在特定日期和時間或特定時間表自動執行,無需接觸圖形介面。
使用 schtasks,您可以安排重複性任務。 (每隔 X 分鐘、小時、天、週或月),系統啟動時、特定使用者登入時、電腦空閒時,甚至回應系統事件時都會啟動的任務。此外,您還可以使用不同的使用者帳戶(包括 SYSTEM 帳戶)以及遠端電腦啟動這些任務。
schtasks 的基本操作 它們被分成六個主要子命令,這些子命令是您 99% 的時間都會用到的:
- schtasks 變更:修改現有任務的屬性(要執行的程式、使用者、密碼、互動模式…)。
- schtasks 創建:建立一個新的計劃任務。
- schtasks 刪除:從調度程序中刪除任務。
- schtasks 結束停止正在運行任務的程式。
- schtasks 查詢顯示團隊的計劃任務。
- schtasks 運行:強制立即執行已建立的任務。
這些操作背後有許多參數 為了定義頻率、開始和結束日期、任務執行使用者、遠端團隊、延遲、持續時間、權限等級等,我們在下面為您詳細列出。
使用 schtasks 所需的許可證

在你開始瘋狂創建任務之前明確你需要哪些權限非常重要,否則你最終會得到已建立但未執行的任務,或是靜默失敗的任務。
在本地團隊中,負責管理所有任務 若要查看、建立、修改和刪除任務,您需要擁有管理員權限。普通使用者在某些情況下也可以建立自己的任務,但如果您想要完全控制系統,請使用具有管理員權限的帳戶進行操作。
遠距團隊的情況也類似。您使用的帳戶必須是遠端電腦上的管理員帳戶。您可以從您的電腦執行該命令並使用參數。 /s 指示目的地團隊和 /u y /p 提供該電腦或網域的管理員憑證。
/u 參數僅能正常運作。 當本機電腦和遠端電腦位於相同網域或已配置信任關係的網域中時,就會發生這種情況。如果沒有信任關係,遠端電腦將無法驗證您提供的帳戶,即使任務看起來已創建,也會顯示配置錯誤或為空。
此外,任務本身必須具有足夠的權限。 執行您要求的操作。預設情況下,任務以目前使用者或您指定的使用者身分執行。 /u如果您希望它們使用其他帳戶或直接使用系統權限啟動,則必須使用該參數。 /ru (以使用者身分執行)並且,通常情況下, /rp 輸入密碼。
schtasks 的通用語法和關鍵參數
schtasks 的語法相當複雜。然而,它始終遵循相同的模式:一個子命令,後面跟著定義任務執行內容、時間、地點和權限的參數。建立任務的一般格式如下:
schtasks /create /sc <tipo_programación> /tn <nombre_tarea> /tr <comando_o_programa>
建立任務時的基本參數 分別是:
- /sc:類型 程序設計典型值:
- MINUTE每隔 N 分鐘。
- 每小時每隔 N 小時。
- DAILY每隔 N 天。
- 每週每隔 N 週。
- 月刊每隔 N 個月。
- 一旦單次執行。
- 啟動在每個 開機 系統的。
- 登入當用戶登入時。
- 奧尼德爾:當系統閒置 X 分鐘後。
- 事件:響應日誌中的特定事件。
- /tn:唯一的任務名稱。可以包含資料夾路徑(例如,
"MiCarpeta\BackupDB"最多 238 個字元。 - /tr要執行的可執行檔、腳本或 .bat 檔案的完整路徑。如果未指定路徑,則預設使用預設路徑。
%SystemRoot%\System32最大長度為 262 個字元。 - /s遠端電腦(名稱或 IP 位址)。如果不使用遠端計算機,則表示您正在對本機進行操作。
- /或者: 執行 schtasks 指令本身時所使用的憑證(用於遠端程式設計)。
- /p:指定使用者的密碼 /u如果你不提供,主機將會要求你提供。
- /ru { | 系統}執行任務所使用的帳戶。您可以使用網域使用者、本機使用者或帳戶。 系統.
- /rp:指定帳戶的密碼 /ru它不與…一起使用
/ru System因為 SYSTEM 帳號沒有密碼。 - /月:節目類型中的頻率修飾符(分鐘、小時、天、週或月)。
- /d:每週或每月某些模式下的特定日期(例如,
/d MON,FRI). - /m:具體月份(1月至12月或*表示全部月份)。
- /英石:開始時間(24 小時制)
HH:MM). - /et o /du:以分鐘/小時為單位的行程結束時間或最長持續時間。
- /sd y /ed:根據系統區域設定決定開始和結束日期。
- /物品:僅當執行使用者以互動方式登入時才執行任務。
- /np:不保存密碼;該任務以非互動方式運行,並且僅使用本地資源。
- /z:在計劃任務結束後自動刪除該任務。
- /rl權限等級(有限或最高)。
- /f強制建立或修改,無需確認即可覆蓋。
還有更高階的參數 (XML、向後相容性、延遲) /延遲(HRESULT 程式碼等),但透過上述方法,您可以涵蓋幾乎所有標準情境。
以不同頻率安排任務
schtasks 的優勢之一 關鍵在於可以靈活地設定執行頻率。你可以調整執行頻率,從每隔幾分鐘執行一次,到每月最後一天發布,或每季的第二個星期日發布。
精確到分鐘的日程安排,它被使用 /sc 分鐘. 修飾符 /月 這表示任務啟動的頻率(以分鐘為單位)。如果未指定,則預設值為 1 分鐘。
例如,間隔時間為 20 分鐘: schtasks /create /sc minute /mo 20 /tn "Security Script" /tr \\central\data\scripts\sec.vbs
時段範例: schtasks /create /tn "Security Script" /tr sec.vbs /sc minute /mo 100 /st 17:00 /et 08:00 /k
安排 被使用 /sc 小時再次 /月 指示運行頻率。例如,從 3 月 1 日起每 5 小時運行一次 MyApp:
5 小時課程表示例: schtasks /create /sc hourly /mo 5 /sd 03/01/2002 /tn MyApp /tr c:\apps\myapp.exe
在日常安排中 (/sc 每日) 您可以使用 /月 為了拉開執行間隔。例如,從特定日期開始,每隔 12 天執行一次 MyApp:
每日間隔範例: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc daily /mo 12 /sd 12/31/2002 /st 13:00
每週日程安排 由…定義 /sc 每週,合併 /月 (間隔數週) /d (星期幾:星期一、星期二、星期三、星期四、星期五、星期六、星期日或*)。例如,要每隔一個星期五啟動 MyApp:
每週範例(每兩週一次): schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc weekly /mo 2 /d FRI
每月日程安排有多種選擇。:
- 到每月特定日期為止 (1-31) /sc 月度 y /d.
- 每周和每天 (第一、第二、第三、第四 + /天)以及可選 /m 隨著月份的推移。
- 本月最後一天 同 /mo 最後一天 y /m 指定月份或*所有月份。
每月範例(特定月份的最後一天): schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /mo LASTDAY /m FEB,MAR /st 18:00
特殊觸發條件:一次性觸發、啟動觸發、登入觸發和空閒觸發
你並非總是需要重複執行某個任務。有時你只需要在特定的日期和時間運行一次某些操作。以下類型就是為此而設計的。 /sc 一次這需要一個 /英石 通常情況下, /sd:
單次執行範例: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc once /sd 01/01/2003 /st 00:00
ONSTART 類型 (/sc onstart這樣一來,該任務就會在每次系統啟動時運行,非常適合用於維護腳本、監控或自訂服務:
範例 OnStart: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onstart
登入 (/sc onlogon此操作會在使用者登入時執行任務。您可以使用它來啟動環境腳本、掛載網路磁碟機、啟動內部應用程式等等。例如,在遠端電腦上:
遠端登入範例: schtasks /create /tn "Start Web Site" /tr c:\myiis\webstart.bat /sc onlogon /s Server23
奧尼德爾 (/sc onidle當電腦處於不活動狀態一段時間後(該時間由您定義),會觸發該任務。 /i 只需幾分鐘。例如,要在裝置閒置 10 分鐘後啟動 MyApp:
例如,空閒 10 分鐘: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc onidle /i 10
建立具有特定權限的任務:備用使用者和 SYSTEM 權限。
schtasks 的一個非常強大的用途是使用不同的帳戶啟動任務。 例如,即使您目前使用的使用者帳戶登錄,也可以使用管理員帳戶安排維護,或使用 SYSTEM 帳戶執行進程以獲得更高的權限。
使用不同的使用者帳戶執行任務 此參數被使用 /ru 以及密碼 /rp例如,每週二在本機上以 Admin06 使用者身分啟動 MyApp:
例如 /ru 的替代方案: schtasks /create /tn MyApp /tr myapp.exe /sc weekly /d TUE /ru Admin06
在遠端系統中,/uy 和 /p 控制誰來調度任務。而 /ru 明確指定要使用哪個帳戶執行此操作。這是兩個不同的概念,不應混淆。
- /u:運行 schtasks 命令並在遠端上建立任務的憑證。
- /ru:屆時將用於執行任務的帳戶。
使用不同帳戶的遠端範例: schtasks /create /tn MyApp /tr myapp.exe /sc daily /mo 4 /s Marketing /u Marketing\Admin01 /ru Reskits\User01
如果您想使用系統帳戶對於享有極高特權的人,只需具體說明即可。 /ru System 無需密碼。例如,要以 SYSTEM 身分在每月 15 日執行 MyApp:
例如,作為系統: schtasks /create /tn MyApp /tr c:\apps\myapp.exe /sc monthly /d 15 /ru System
請注意,以 SYSTEM 身分執行的進程。 它們不具備互動性:使用者看不到窗口,也無法與之互動。它們非常適合用於服務、維護腳本或系統任務,但不適合開啟使用者可見的應用程式。
管理現有任務:更改、運行、列出和停止
任務創建完成後,schtasks 它提供了幾個子命令來管理它們,而無需打開任務計劃程式圖形控制台。
更改屬性 使用現有任務 schtasks /change您可以修改它運行的程式、執行程式的使用者、密碼,或將其設定為僅在互動式會話中執行:
- / tr:新的可執行檔或腳本。
- /ru:新的執行帳戶(使用者或 SYSTEM)。
- /rp: /ru 帳號的密碼。
- /物品:將任務標記為「僅在使用者登入時執行」。
腳本修改範例: schtasks /change /tn "OpenWebinarsSchedule" /tr C:\Users\OpenWebinars\Documents\Release\nuevo_script.bat
如果您現在想啟動一項任務忽略其編程,你使用 schtasks /運行此次執行不會改變下次預定日期:
立即運行: schtasks /run /tn "OpenWebinarsSchedule"
列出團隊的任務 被使用 schtasks /查詢您可以選擇簡單的清單、表格或詳細清單格式:
schtasks /query→ 基本清單。schtasks /query /fo LIST /v→ 詳細列表,對故障排除非常有用。
如果某個任務正在執行您想要停止的程式。, 你有 schtasks /結束您只需要任務名稱:
強制停止任務: schtasks /end /tn "OpenWebinarsSchedule"
當你不再需要這項任務時你可以用以下方法消除它: schtasks /刪除您可以刪除特定任務或全部任務(請謹慎操作):
schtasks /delete /tn OpenWebinarsSchedule /f→ 刪除該任務,無需請求確認。schtasks /delete /tn * /f→ 刪除所有計劃的系統任務。
透過按計劃完成任務(技術和安全願景)
對 schtasks 的高級而巧妙的使用 它涉及創建任務作為持久化機制:配置程式或腳本定期運行或在系統啟動時運行,即使無人登入。這對合法管理員很有用,但攻擊者也會利用它,因此從…的角度充分理解它非常重要。 網絡安全.
Windows 中的排程任務其實就是一個指令。 這允許系統在特定時間或以特定頻率啟動命令、腳本或可執行檔。如果使用 SYSTEM 帳戶定義此任務並設定非常短的頻率,則可以使二進位檔案即使在關閉後也持續運作。
持久性範例(系統每 N 分鐘執行一次): schtasks /create /ru "SYSTEM" /sc minute /mo <minutos> /tn "<nombre>" /tr "<comando>"
將上一訂單分解:
- /ru «系統»:使用 SYSTEM 帳號執行任務,即具有非常高的權限。
- /sc 分鐘:程式設計類型(分鐘)。
- /月重複間隔,例如每十分鐘重複 10 次。
- /tn « »:任務的識別名稱,如果有人想不引起注意,可以將其偽裝成無害的名稱。
- /tr « »要執行的程式或腳本(帶有參數的完整路徑)。
有些情況下,schtasks 會被合併。 使用類似的工具 plink.exe 建立反向連線、連接埠隧道等,並設定為定期重新啟動。從防禦角度來看,應定期檢視計畫任務。 schtasks /query /fo LIST /v 必須使用事件檢視器來偵測此類使用情況。
從 AT 到 schtasks:為什麼你不應該再使用 AT 了
多年來,Windows 系統一直包含 AT 指令。 用於安排任務。在現代版本中,此命令已被正式棄用,當您嘗試使用它時,控制台會提示:“AT 命令已棄用。請改用 schtasks.exe。”
AT允許對簡單指令進行編程 只需指定時間、日期和要執行的命令。例如,每天午夜將文件複製到另一個磁碟機:
經典的AT範例: at 00:00 cmd /c copy C:\Documents\*.* J:\MyDocs
您也可以列出和刪除 AT 任務 它支援同一命令的各種變體(例如按 ID、遠端機器等)。然而,它在靈活性、權限精細度和高級選項方面遠不及 schtasks。
在 Windows 10 及更高版本中,AT 仍然存在。 它僅作為相容性包裝器使用,但會傳回請求不受支援的訊息。如果您使用的是仍可運行的舊版 Windows 系統,建議您將自動化流程移轉到 Schtasks,它是官方支援且功能更強大的工具。
Schtasks 與任務調度器圖形介面
schtasks 能做的所有事情也都可以做 從 任務排程器圖形控制台 (打開) taskschd.msc 雖然可以透過執行命令來運行,但使用命令列有明顯的優勢:您可以自動部署、產生可重複使用的腳本、批次應用更改,或者無需坐在遠端團隊面前即可與他們合作。
在混合環境中,這是一種非常實用的方法。 它融合了兩種方式:首先,透過圖形介面建立一個基礎任務來了解所有設定;然後,將其匯出為 XML 檔案;最後,使用帶有參數的 schtasks 工具。 /xml 透過僅調整必要內容(使用者、日期等)來部署副本。
您也可以將 schtasks 整合到 .bat 或 .ps1 腳本中。 以及其他維護任務:清潔 日誌重新啟動服務、啟動備份或通知,所有這些都由呼叫主腳本的單一排程任務觸發。
如果您管理多台機器或用戶,主任務和 用於自動化任務的程序 它能讓你免去早起手動備份的麻煩,防止你遺忘重要事項,並減少因反覆手動操作而導致的人為錯誤風險。它實際上是在教會系統為你完成那些每天耗費你時間的事情。
深入理解 schtasks、其程式參數以及 /u、/ru、本地和遠端權限之間的相互作用 它允許您在 Windows 中準確、安全、可重複地自動執行幾乎任何例程,讓電腦發揮其最佳功能:一天 24 小時嚴格按照指令執行。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。