任務排程器 - 任務「成功」完成,退出代碼為 0x8007001

任務排程器 - 任務「成功」完成,退出代碼為 0x8007001

我正在 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 進程,而不是使用批次檔。這本來可以是解決方案。

  • 我還考慮過用服務替換「啟動時」規劃任務,對於這樣一個微不足道的問題,這將是一個相當昂貴的實驗。

最終,我考慮在排程任務上新增延遲,並尋求像延遲服務一樣配置我的任務 - 服務可以是「自動」或「自動(延遲啟動)」。對於「啟動時」排程任務,觸發器具有自己的單獨屬性,包括新增延遲的功能:

描述延遲啟動時規劃任務解決方案的圖像

我相信我的計劃任務有時會提前幾毫秒啟動,並且某些作業系統服務或功能尚不可用或不允許。只需在觸發器上添加一個小的延遲即可解決問題。

相關內容