
我正在 Windows 10 Pro 上執行一項日常任務,這應該是
- 將電腦從休眠狀態喚醒
- 啟動 cmd.exe,運行命令腳本將檔案複製到網路驅動器,建立日誌文件
- 關閉電腦
從任務規劃程序中手動啟動任務時,一切都會如預期執行。
當計算機處於休眠模式時,任務調度程式會在指定時間喚醒計算機,但顯然命令檔(.cmd)根本沒有執行。不會建立日誌文件,不會複製任何文件,並且不會關閉電腦。該任務被標記為“已成功完成,回傳代碼為 2147942401”即十六進位 0x80070001。此錯誤代碼似乎表明“非法功能”,但我不知道這可能是什麼,特別是因為如上所述,手動啟動時任務運行良好。
以下是任務設定的概述(翻譯自德語,但應該很清楚):
General:無論使用者登入都執行;不儲存密碼;最高特權;針對 Windows 10 配置
操作:啟動程式cmd.exe;參數:/c“cmd 腳本路徑\script.cmd >> logfile.txt”;開始於:空
條件:重新啟動計算機
設定:如果需要允許執行;若執行失敗則每10分鐘重新啟動一次;如果執行時間超過 3 天,則結束任務;如果未根據請求停止,則強制結束活動任務;不要啟動新實例
我還有另一項任務要備份確切地運行良好的相同設定(喚醒,運行腳本,然後關閉電腦)。
任何提示都非常感謝,歡迎提問。
答案1
事實上,沒有。但是,我使用了最簡單的任務計劃程序設置,現在它可以工作了。
一般的:
- 僅當使用者登入時使用
- 使用最高權限
- 針對 Windows 10 配置
行動:
程序/腳本:C:\Windows\System32\cmd.exe
參數:/c <your batch file with parameters>
狀況:
- 重新啟動計算機
設定:
- 如果需要允許執行
- 如果錯過開始,盡快執行
- 如果任務失敗,每 5 分鐘重新啟動一次
- 若執行超過 3 天則終止任務
- 如果未按請求停止則強制終止
- 如果任務已在運行,則停止目前實例
現在,它每天都在指定時間運行,持續了幾個月。
答案2
Powershell 對排程任務很挑剔。我已經為此花費了很多時間。以下是我使用經過嘗試和驗證的批次檔進行故障排除的方法。
嘗試建立一個中間批次檔並讓該批次檔呼叫 powershell。使用批次文件,您可以執行一堆回顯,然後將其輸出到日誌中。這將允許您查看該進程的完整標準輸出/標準錯誤。這可能有助於更詳細地進行故障排除。
可以透過附加到計劃任務參數來建立日誌> "<path_to_log_file>" 2>&1
。
答案3
對我來說,這項任務有時有效,有時無效。根據計劃任務歷史記錄,當失敗時,它看起來好像已經運行了大約 40 秒,什麼也沒做,然後完成action "C:\windows\SYSTEM32\cmd.exe" with return code 2147942401
。
在這種情況下,沒有必要弄亂群組策略設置,因為有時它會會工作,但不是每次都工作(參見https://stackoverflow.com/questions/48343993/batch-file-from-scheduled-task-returns-code-2147942401/)。
簡化、重新建立、重新配置我的任務並沒有解決問題。
我確實還考慮過刪除我的批次檔並擺脫標準輸出重定向,從而放棄日誌記錄功能(並變得盲目)。或者只是運行實際的 .exe 進程,而不是使用批次檔。這本來可以是解決方案。
我還考慮過用服務替換「啟動時」規劃任務,對於這樣一個微不足道的問題,這將是一個相當昂貴的實驗。
最終,我考慮在排程任務上新增延遲,並尋求像延遲服務一樣配置我的任務 - 服務可以是「自動」或「自動(延遲啟動)」。對於「啟動時」排程任務,觸發器具有自己的單獨屬性,包括新增延遲的功能:
我相信我的計劃任務有時會提前幾毫秒啟動,並且某些作業系統服務或功能尚不可用或不允許。只需在觸發器上添加一個小的延遲即可解決問題。