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). 

外部連結