Windows工作排程器

任務計劃程序(英語:Task Scheduler),也稱計劃任務。這是Microsoft Windows中的一個組件,可以預先計劃在特定時間或指定時間後啟動程序或腳本。它在Windows 95Microsoft Plus!中以「系統代理」(System Agent)首次引入,隨後在Windows 98中被更名為任務計劃程序。任務計劃程序啟動前,Windows事件記錄服務必須已在運行。

Windows工作排程器
其他名稱taskschd.msc
開發者微軟
內置於Internet Explorer 4.0及之後
Windows 98及之後
前任系統代理
服務名稱Task Scheduler (Schedule)
類型Windows服務
網站docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page 編輯維基數據

此服務不應與計算機調度混淆,因其為分配CPU資源到內存中的進程。

版本

任務計劃1.0

任務計劃程序1.0搭載於Windows 2000Windows XPWindows Server 2003[1]它運行為一個Windows服務,任務定義和計劃存儲於二進制的.job文件,操作各任務就是直接操作各.job文件,每個任務對應一個操作。在Windows 95Windows 98Windows Me中,任務計劃程序使用一個普通的mstask.exe程序運行。在Windows 95和Windows 98中,它還在通知區域顯示一個狀態圖標;在Windows Me中則是運行為一個隱藏服務,但可以顯示一個托盤圖標。[2]在Windows 2000、Windows XP和Windows Server 2003中,它被實現為一個Windows服務,計算機程序和腳本可以通過六個COM接口訪問此服務。[3]微軟還提供了一個計劃助手DLL、一個例子VBScript和一個自動任務計劃程序的配置文件。[4]

任務計劃程序除了控制面板中的圖形用戶界面,Windows還提供兩個命令行工具來管理計劃任務:at.exe(已棄用)和schtasks.exe[5][6]但是,at.exe不能訪問用控制面板或schtasks.exe創建或修改的任務。[7]另外,使用at.exe創建的任務默認非交互;交互任務需要被顯式請求。[8]

任務計劃2.0

任務計劃程序2.0在Windows VistaWindows Server 2008及之後版本中存在。[1]重新設計的「任務計劃程序」用戶界面基於微軟管理控制台。除了在指定的時間或時間間隔後運行任務,任務計劃程序2.0還支持日曆和基於事件的觸發器,比如在特定日誌被記錄到事件日誌時啟動一個任務,或者在發生一系列事件時啟動任務。另外,同一個事件觸發的多個任務可以配置為同時或者按預先配置的順序以鏈式執行一系列動作,而無須創建多個計劃任務。任務也可配置為基於系統狀態運行,諸如閒置指定時間、啟動時、註銷時,或者只是特定周期或指定時間。對Windows事件日誌還可以使用XPath表達式過濾。任務也可在指定事件發生後延遲指定時間再執行,或者不斷重複直至其他某些事件發生。任務還可配置運行失敗時執行的操作。操作可以響應觸發器,既基於事件又基於時間,不僅包含啟動應用程序,還執行一系列自定義操作。任務計劃程序已包含大量為眾多應用程序準備的內置操作,包括發送電子郵件、顯示消息框、觸發一個COM句柄等。使用任務計劃程序API還可指定自定義操作。任務計劃程序會在歷史日誌保留所有任務的所有執行詳細信息。[9]Windows Vista使用任務計劃程序2.0運行各種系統級任務;[10]因此,任務計劃程序服務不再允許被禁用(除非直接修改註冊表)。

任務計劃程序2.0提供了一個API以允許計算機程序和腳本創建任務。[11]它採用42個COM接口組成。[12]任務計劃程序2.0的任務文件基於XML並且人類可讀,遵循「任務計劃程序方案架構」。[11]雖然可以做到,但微軟不建議手動創建任務文件,而應該使用任務計劃程序API。

其他功能

  • 新的安全功能,包括使用「憑據管理器」為工作組計算機的任務提供密碼,使用Active Directory加入域英語Windows_domain的計算機的任務提供憑據,以防止這些信息被輕易檢索。另外,計劃任務會在其自身的會話執行,而不是使用當前用戶的系統服務會話。
  • 可以喚醒遠程計算機,或使用BIOS計時器將機器從睡眠或休眠中喚醒,以執行計劃任務或運行剛錯過的計劃任務。
  • 可以將任務直接附加到事件查看器中的事件。

任務

任務計劃程序按各項受管理的任務運作。任務會在特定條件下以執行操作響應。定義一個任務可以關聯一系列操作,其中可以包括啟動應用程序或採取其他自定義操作,to a set of triggers, which can either基於時間或基於事件。此外,一個任務也可以包含定義如何執行操作的元數據,例如任務將在哪個安全上下文運行。任務被序列化為.job文件並存儲在名為「任務文件夾」的特殊文件夾中。在編程角度,任務文件夾可以使用ITaskFolder接口或TaskFolder腳本對象訪問,單個任務可以使用IRegisteredTask接口或RegisteredTask對象訪問。[13]

軟件缺陷

在Windows 2000和Windows XP中,當計算機準備使用sysprep進行磁盤映像時,分配給以系統權限運行的任務不起作用。Sysprep會更改安全標識符(SID)以避免重複,但不會更新計劃任務為使用新的SID。因此,所有SYSTEM的計劃任務在映像的計算機上都會運行失敗。沒有適用於此問題的解決方案,但重新計劃該任務可以暫時緩解問題。[14]

在Windows Vista和Windows Server 2008上,如果未安裝Service Pack 2,任務計劃程序中的「下次運行時間」可能顯示錯誤。[15]

當用戶在Windows Vista、7、2008以及2008 R2作業系統上的「微軟管理控制台」運行「任務計劃程序2.0」版本時會提示用戶當前正在運行「任務計劃程序1.0」的通知。雖然只是一個不足為慮的小瑕疵,很可能是軟件開發人員在重寫該組件時忘記修復此Bug。但在後續的Windows 8和Windows Severe 2012作業系統中已得到糾正。

參見

參考資料

  1. ^ 1.0 1.1 "About the Task Scheduler". [2016-06-22]. (原始內容存檔於2012-04-20). 
  2. ^ How to Enable the Scheduled Tasks Icon in Windows Me. [2016-06-22]. (原始內容存檔於2008-01-30). 
  3. ^ Task Scheduler 1.0 Interfaces. MSDN. Microsoft. [30 May 2014]. (原始內容存檔於2016-08-28). 
  4. ^ Task Scheduler Using VBScript. [2016-06-22]. (原始內容存檔於2006-05-04). 
  5. ^ Schtasks. Windows XP command-line reference. Microsoft. [18 May 2014]. (原始內容存檔於2018-02-03). 
  6. ^ At. Windows XP command-line reference. Microsoft. [18 May 2014]. (原始內容存檔於2018-02-03). 
  7. ^ How To Use the AT Command to Schedule Tasks. Support 4.5. Microsoft. 30 October 2006. (原始內容存檔於2015-03-07). 
  8. ^ Applications Started with AT Are Not Interactive. Support 3.2. Microsoft. 20 February 2007. (原始內容存檔於2004-10-29). 
  9. ^ Windows Vista Task Scheduler. Microsoft TechNet. March 3, 2006 [2006-04-24]. (原始內容存檔於2006-04-24). 
  10. ^ Description of the scheduled tasks in Windows Vista. [2016-06-22]. (原始內容存檔於2007-10-22). 
  11. ^ 11.0 11.1 Kenny Kerr. Task Scheduler 2.0. MSDN. [2007-10-06]. (原始內容存檔於2007-12-26). 
  12. ^ Task Scheduler 2.0 Interfaces. MSDN. Microsoft. [30 May 2014]. (原始內容存檔於2016-03-04). 
  13. ^ Tasks (Windows). MSDN. [2007-10-06]. (原始內容存檔於2008-02-13). 
  14. ^ Scheduled tasks may not start if you used a System Preparation image to install Windows XP or Windows 2000. Microsoft Support. Microsoft. 1 July 2004 [19 May 2012]. (原始內容存檔於2013-04-13). 
  15. ^ The value in the Next Run Time field in Task Scheduler is incorrect in Windows Vista and in Windows Server 2008. Microsoft Support. Microsoft. 15 October 2008 [19 May 2012]. (原始內容存檔於2014-03-08). 

外部連結