Windows任务计划程序Task Scheduler笔记
微軟文檔居然搜不到了
Windows任務計劃程序已經存在許多年了,原來在微軟的TechNet上有詳細的操作介紹的,現在發現網站改版,原來的介紹居然搜索不到了,微軟的平臺上出現這種事情,也是比較吃驚了。
添加任務計劃不難
添加任務計劃有兩種方式,一種是通過圖形界面進行,一種是使用腳本或者編程的方式進行。
圖像界面方式,可以通過直接運行taskschd.msc打開,或者在windows的搜索欄中搜索任務計劃,Windows會找到這個程序。
在左邊的任務計劃程序庫中點擊右鍵,然后點擊“創建任務”,再往后,按照彈出窗口的內容,一步一步操作就好,整個過程都比較簡單。
然而,復雜的問題是,在創建計劃的時候,有不少的選項,選還是不選,還真是讓人覺得困惑。下面主要記錄對這些配置的解釋。
任務計劃的處理邏輯
計劃有兩個重點,一個就是觸發器,按照各種事件來啟動任務中操作的執行,另外一個是錯誤處理,這個在后面的配置中也有所體現。
任務計劃的配置
安全選項
默認情況下,計劃的任務在已計劃任務的用戶的安全上下文中運行,而且只有在該用戶登錄(觸發任務時)時才運行。若要修改此任務,請在顯示任務的屬性時,在“常規”選項卡的“安全選項”部分中更改設置。
通過單擊**“更改用戶或組”按鈕**,可以為要在其下運行的任務選擇不同的用戶帳戶或組帳戶。如果用戶帳戶不是管理員組的成員,則該按鈕的標題為“更改用戶”。不在管理員組中的用戶帳戶只能為要在其下運行的任務指定用戶帳戶。
可以指定即使在觸發任務時計劃在其下運行任務的帳戶未登錄,該任務也應該運行。若要執行此操作,請選擇標記為“不管用戶是否登錄都要運行”的單選按鈕。如果選擇了此單選按鈕,則任務不會交互運行。若要使任務交互運行,請選擇“只在用戶登錄時運行”單選按鈕。
如果選擇了“不管用戶是否登錄都要運行”選項,則在保存任務時,系統可能會提示您提供帳戶憑據,無論是否選中標記為“不存儲密碼”的復選框。如果在觸發對應任務時該帳戶未登錄,則服務將使用已保存的憑據以指定帳戶運行,并且在使用生成的令牌時將不受約束。
如果選中了標記為“不存儲密碼”的復選框,則任務計劃程序不會存儲在本地計算機上提供的憑據,但會在正確驗證用戶身份后放棄這些憑據。需要運行任務時,任務計劃程序服務將使用 Kerberos 身份驗證協議的“用戶服務”(S4U) 擴展來檢索用戶的令牌。
如果所計劃的任務需要管理員權限,如果要運行該任務,還必須確保選中了“使用最高權限運行”復選框。
最下方有一個”隱藏“選項,選中這個選項之后,任務在運行的時候將不彈出可見的運行窗口。(任務還是會執行,只是窗口被隱藏了)
觸發器的高級設置
觸發器的高級設置部分需要記錄下設置的含義。
任務最多延遲時間(隨機延遲):使用此設置,可以指定觸發任務后延遲任務運行的時間。如果使用的是基于時間的觸發器(“制定計劃時”),則延遲時間將為觸發任務的時間與此設置中指定的時間之間的隨機時間。如果計劃在下午 1:00 觸發任務,并且將“任務最多延遲時間(隨機延遲)”設置設為 5 分鐘,則該任務將在下午 1:00 與 1:05 之間的某個時間運行。
重復任務間隔:使用此設置,可以為任務設置重復時間間隔。任務將運行,等待指定的時間間隔,然后再次運行。此循環將繼續下去,直到滿足持續時間。
**任務的運行時間超過此值則停止執行:**使用此設置,可以通過對允許任務運行(執行操作)的時間設置時間限制來停止長時間運行的任務。
**到期日期:**使用此設置,可以設置觸發器過期的日期和時間。觸發器過期后,無法使任務運行。此時間相對于在運行任務的計算機上設置的時區。選中“跨時區同步”復選框,以使時間相對于協調世界時 (UTC),而不是在運行任務的計算機上設置的時區。如果要協調一組任務使其在多個時區中同時過期,請使用“跨時區同步”設置。
**已啟用:**使用此設置,可以啟用或禁用任務。啟用的任務可以運行,但禁用的任務在啟用前無法運行。
操作
任務計劃的操作屬性也比較簡單。
”啟動程序“中發郵件和顯示消息都已經啟用,選不了其它的的了
”程序或者腳本“文本框中,輸入要啟動的程序或腳本的名稱。如果程序或腳本接受命令行參數,則可以在“添加參數(可選)”文本框中提供這些參數。在“起始于(可選)”文本框中,可以為執行程序或腳本的命令行指定工作目錄。此目錄應該為程序或腳本文件的路徑,或可執行文件所使用的文件的路徑。需要注意的是,最好要配置一下工作目錄,因為,默認的工作目錄為:C:\Windows\System32,在該目錄下運行有諸多限制,可能導致意外情況發生。
另外需要提一下的是,一個計劃中可以包含多個”操作“,在執行的時候,是按順序依次執行操作列表中的”操作“。
條件
條件控制任務是否運行。如果在觸發任務使之啟動后滿足任務的所有條件,則任務將運行。條件分為三種類別:空閑條件、電源條件和網絡條件。任務的條件顯示在“任務屬性”對話框或“創建任務”對話框的“條件”選項卡中。
空閑條件
可以設置一個條件,通知當觸發器被激活時,僅當計算機在指定的一段時間內一直處于空閑狀態時,任務才運行。設置此條件時,還可以設置(在觸發任務后)等待計算機進入空閑狀態的時間。
任務計劃程序服務每 15 分鐘就會檢查計算機是否處于空閑狀態。屏幕保護程序正在運行時,就認為計算機處于空閑狀態。在屏幕保護程序沒有運行時,如果在過去十五分鐘的 90% 時間內,CPU 使用率為 0% 且磁盤輸入或輸出為 0%,并且在此時間段內沒有任何鍵盤或鼠標輸入,即認為計算機處于空閑狀態。任務計劃程序服務檢測到計算機處于空閑狀態后,該服務僅等待用戶輸入以標記空閑狀態的結束。
如果將任務設置為只有在計算機處于空閑狀態 30 分鐘后啟動,并且該任務等待計算機處于空閑狀態 10 分鐘,則只有在激活觸發器之前計算機處于空閑狀態 25 分鐘時,該任務才會在 5 分鐘內啟動。如果計算機在激活觸發器后 5 分鐘進入空閑狀態,則任務不會啟動。
如果為任務選擇了“如果計算機不再空閑,則停止”條件,并且在計算機處于空閑狀態時任務正在運行,則當計算機不再空閑時,任務將停止運行。如果選擇了“如果空閑狀態繼續,則重新啟動”條件,則根據此條件停止的任務在下次計算機進入空閑狀態時將再次開始運行。
電源條件
可以設置一個條件,通知激活任務觸發器時,任務只有在計算機使用交流電源(而不是電池電源)時才運行。如果設置了此條件,則還可以設置一個條件,即如果計算機轉用電池電源,則停止任務。如果為任務設置了這兩個條件,就已確保了只有在計算機使用交流電源時任務才運行。
還可以設置一個條件,通知任務從睡眠模式喚醒計算機,以便在激活觸發器時運行任務。設置喚醒計算機運行任務的條件之前,請確保任務不會導致計算機在不方便的時候喚醒。
任務計劃程序服務喚醒計算機運行任務時,屏幕可能始終處于關閉狀態,即使計算機不再處于睡眠模式或休眠模式也是如此。Windows 檢測到用戶返回使用計算機時,屏幕將打開。
網絡條件
可以設置一個條件,只有在特定的已命名網絡連接可用或任何網絡連接都可用時(激活任務的觸發器時)才運行任務。如果任務操作需要網絡連接才能執行,請設置此條件。
任務設置
任務設置指定運行、停止或刪除任務的方式。任務的設置顯示在“任務屬性”對話框或“創建任務”對話框的“設置”選項卡中。以下列表包含任務設置的說明。
允許按需運行任務:通過允許按需運行任務,可以指定在計劃運行任務前后是否可以手動運行該任務。默認設置允許用戶按需隨時運行任務。有關如何按需運行任務的詳細信息,請參閱按需運行任務。
如果錯過了計劃開始操作,立即啟動任務:如果選中了此設置,則任務計劃程序服務將啟動任務(如果計劃在特定時間運行該任務),但是由于某種原因(例如,計算機已關閉或任務計劃程序服務處于繁忙狀態),該任務未被激活。任務計劃程序服務不會在錯過了該任務后立即啟動該任務。默認情況下,該服務會等待十分鐘,之后才啟動錯過的任務。
如果任務失敗,按以下頻率重新啟動: <時間段>:如果任務無法運行(任務的上次運行結果不成功),請使用此設置重新啟動任務。可以指定任務重新啟動嘗試之間的時間間隔,以及嘗試重新啟動任務的次數。
如果任務運行時間超過以下時間,停止任務: <時間段>:使用此設置,可以限制允許任務運行的時間。使用此設置可以限制可能需要大量時間執行(從而為用戶帶來不便)的任務。
如果請求后此任務還在運行,強行將其停止:如果選擇了上一個設置以及此設置,則當任務未對(上一個設置的)停止請求做出響應時,將強制任務停止。此設置其實是上一個設置的附屬設置。
如果任務沒有計劃再次運行,則在此之后刪除該任務: <時間段>:如果選擇了此設置,則在未計劃再次運行任務時,任務計劃程序服務將自動刪除該任務。刪除任務之前,任務計劃程序服務將等待指定的時間段。如果未選擇此設置,則任務計劃程序服務不會自動刪除任務。為了選擇此設置,任務至少必須包括一個有截止日期的觸發器。
如果此任務已經運行,以下規則適用:
根據計劃需要啟動一個任務的時候,可能發現此任務的實例正在運行,因此必須指定在任務的另一個實例已經運行時,任務計劃程序服務應如何運行該任務:
**請勿啟動新實例:**任務計劃程序服務不會運行任務的新實例,也不會停止已經運行的實例。
**并行運行新實例:**任務計劃程序服務將并行運行任務的新實例以及已經運行的實例。
**對新實例排隊:**任務計劃程序服務會將任務的新實例添加到該服務將運行的任務隊列中,并且該服務不會停止已經運行的任務的實例。
**停止現有實例:**任務計劃程序服務將停止已經運行的任務的實例,但會運行任務的新實例。
管理任務計劃的命令行方式
另外,還可以使用schtask實用程序創建、刪除、查詢、更改、結束或顯示有關計劃任務的詳細信息,只需要在cmd控制臺中,輸入schtasks /?就可以查看該工具的幫助。
這個工具可以實現上述界面里能做的所有事情。比較常用的就是可以用命令直接啟動一個任務計劃,也可以把啟動命令放在一個bat文件中,需要的時候就雙擊執行,如下所示:
TSG
任務計劃程序服務是否運行
如果在計劃任務或使任務正確運行時遇到了問題,請首先確保任務計劃程序服務正在運行。如果單擊“開始”按鈕、再依次單擊“控制面板”、“系統和維護”、“管理工具”,然后單擊“服務”,則可以驗證服務是否正在運行,并且可以驗證任務計劃程序服務的狀態是否為“已啟動”。
注意;計算機在安全模式下運行時,無法使用任務計劃程序服務。
任務在預期時間運行時沒有運行
如果計劃的任務在預期運行時沒有運行,請確保該任務已啟用,同時還要檢查任務的觸發器,以確保它們設置正確。此外,還應檢查任務的歷史記錄,以查看任務何時啟動,并檢查錯誤。
在右側的操作面板上就可以打開歷史記錄,但是需要提醒的是,歷史記錄會消耗較多的系統資源,常態請保持歷史記錄為關閉狀態。
其次,只有在滿足任務的所有條件時,任務才會運行。可以在“任務屬性”對話框的“條件”選項卡中設置任務的條件。
某些任務只有當特定用戶登錄時才會運行,具體取決于任務的安全選項。如果計劃的任務在預期運行時沒有運行,請確保該任務的安全選項設置正確。
任務已運行,但應執行的程序未正確運行
如果任務試圖執行某個程序,但該程序未正確運行,請首先嘗試手動運行該程序(而不是通過任務),以確保該程序正確運行。可能需要向該程序的路徑添加命令行選項。
某些程序需要提升權限才能正確運行。如果任務正在運行的程序需要提升權限,請確保該任務以最高權限運行。通過在“任務屬性”對話框的“常規”選項卡中更改任務的安全選項,可以將該任務設置為以最高權限運行。
最后,在操作中配置的程序運行時,也有可能因為有其它程序的運行,或者不同程序實例的運行導致”沒有運行“的假象,這個時候需要讓程序本身輸出日志進行協同檢查。
某項任務占用了 100% 的 CPU
可能是某項任務的觸發計劃過于頻繁,使其占用了 100% 的 CPU。如果出現此問題,系統可能會無法使用。若要糾正此問題,應該禁用該任務,并更改該任務的觸發器。
如果由于任務占用了所有系統資源而使系統無響應,請執行下列步驟:
在安全模式下重新啟動計算機(任務計劃程序服務無法在安全模式下運行)。在 /Windows/System32/Tasks 文件夾中,重命名該任務的文件,或刪除文件。在正常模式下重新啟動系統,然后重新定義該任務。
報錯:操作員或系統管理員拒絕了請求
解決辦法:打開“控制面板->管理工具->本地安全策略”,選擇“安全設置->本地策略->安全選項”,在右邊列表中找到“域控制器:允許服務器操作者計劃任務”,將狀態改為“已啟用”。
啟用此策略設置意味著由服務器操作員通過 schtask命令創建的作業將在運行該服務的帳戶的上下文中執行(默認情況下,這是本地系統帳戶)。這意味著服務器操作員可以執行本地系統帳戶能夠執行,但服務器操作員通常無法執行的任務,如將他們的帳戶添加到本地 Administrators 組。
對于大部分組織而言,啟用此策略設置的影響應該很小。用戶(包括 Server Operators 組中的用戶)將仍然能夠使用任務計劃程序向導創建作業,但這些作業將在用戶設置作業時進行身份驗證所使用的帳戶的上下文中運行。
參考文獻
任務計劃的操作幫助雖然找不到了,但是微軟官網上還能找到相關的資料,可以輔助閱讀。
Task Scheduler英文版說明
內容相近,只是英文的,沒有中文翻譯。
https://learn.microsoft.com/zh-cn/dynamics365/business-central/dev-itpro/developer/devenv-task-scheduler
TaskSettings 對象
將的是同一個工具,只是寫給程序員的,但上述涉及到的設置的含義是一致的,如果有不一致的地方,請以官網的說明為準:
https://learn.microsoft.com/zh-cn/windows/win32/taskschd/tasksettings
總結
以上是生活随笔為你收集整理的Windows任务计划程序Task Scheduler笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用GBase 8s数据库
- 下一篇: 小说神器技术交流帖