Windows-7

在使用者未登錄的情況下從任務計劃程序執行批處理文件

  • January 25, 2019

我正在嘗試從任務計劃程序在 Windows 7 上執行批處理文件。如果我從命令提示符執行批處理文件,我可以很好地執行它。

如果我從任務計劃程序執行它以僅在使用者登錄時執行,則該任務將毫無問題地執行。但是,當它在使用者未登錄時執行時,任務計劃程序看起來像是在執行文件,但沒有任何反應。

我嘗試將批處理文件更改為以下行,以確保它不是因為批處理文件中的內容:

echo "success" >> c:\temp\test.log

那是行不通的。有任何想法嗎?我讓它以最高權限執行,並且使用對批處理文件和正在寫入文件的文件夾具有完全權限的管理員帳戶執行。

任務計劃程序:計劃的批處理腳本未執行

任務計劃程序屬性。. .

從 WindowsTask Scheduler上作業**Properties** *(見最底部的螢幕截圖)*中。. .

  • 1. General選項卡,確保選擇/選中或取消選中以下選項,如列印螢幕 A所示

    • 取消選中 Run only when user is logged on
    • 查看 Run whether user is logged on or not
    • 查看 Run with the highest privileges
  • 2. Conditions選項卡,確保下面的選項被選中選中取消選中,如列印螢幕 B所示

    • 查看 Wake the computer to run this task
  • 3. Actions製表符,點擊Edit,並確保為指向批處理腳本所在位置的完整路徑Start in (optional)設置如下例所示(不要在其周圍加上雙引號),沒有最後的反斜杠 " \" Print Screen C


安全考慮

  • 一旦您按下*OK(上面的2.),它應該會提示您輸入憑據來執行它,並且該憑據是需要訪問EXECUTE*它存在的批處理文件的權限,並且它還需要訪問以執行批處理文件正在執行的任何操作你編寫的腳本。
  • 最好為此程序設置一個靜態服務/代理使用者帳戶,然後使用其憑據來執行該程序。您需要確保其密碼強度高且設置為永不過期,並且它需要訪問*EXECUTE*批處理並執行批處理腳本程序正在執行的任何命令和資源等。它也使用。
  • 似乎Run whether user is logged on or not您必須檢查該選項Run with highest privileges以使其從任務計劃程序中按預期實際執行。

錯誤檢查

  • 如果實際批處理腳本存在問題,但 Windows任務計劃程序確實執行它以執行它,但批處理腳本邏輯錯誤,等等,無論出於何種原因,任務計劃程序可能不會在此級別看到此故障。從它的角度來看(大多數情況下預設情況下),它正在執行批處理文件,因此只要它可以執行它並且有權這樣做,它的工作就成功完成了。
  • 錯誤檢查日誌記錄添加到批處理腳本邏輯以擷取(或解決)此級別的問題,包括確保批處理調度程序執行它的安全上下文對批處理腳本執行的命令、資源等具有適當的訪問權限。

組策略注意事項

檢查組策略並以批處理作業權限登錄

答: 在 Windows 上,此權限是通過本地域安全策略授予的。要使用本地安全策略執行此操作,請執行以下步驟。

  1. 控制面板中,打開管理工具,然後打開本地安全 策略。
  2. 安全設置下,打開本地策略並突出顯示使用者權限分配
  3. 找到作為批處理作業登錄。打開屬性並添加任何需要此權限的使用者。
  4. 完成後,保存更改並關閉“**本地安全設置”**視窗。

您的更改應立即生效。要更改域安全策略,請在域控制器上使用控制面板中的域安全策略實用程序


具有映射驅動器或完整 UNC 路徑的批處理腳本邏輯和問題。. .

如果您的腳本正在引用映射的網路驅動器,但您希望它這樣做Run whether the user is logged on or not,那麼在這種情況下,驅動器映射可能實際上並不存在,以便批處理執行預期的操作。

如果可能,UNC請在批處理腳本邏輯中使用路徑而不是映射的驅動器號以避免出現問題。否則,您可能需要PUSHD \\ServerName\ShareName在批處理開始時使用,然後POPD在批處理結束時使用。NET USE X: \\ServerName\ShareName您可以在批處理開始時映射驅動器,然後NET USE X: /DELETE在批處理結束時斷開驅動器。


其他

在此處輸入圖像描述

  • 當您選擇選項時,從**Triggers**計劃任務的選項卡中**Edit**確保將Start:時間和日期設置為尚未通過的值。確保這將日期和時間設置為Future中的值。否則,您可能會注意到作業聲明它計劃在您期望的下一個計劃時間執行;但是,它不會被任務計劃程序執行,任務計劃****程序 選項卡也不會History顯示它曾經被執行過(因為它不是)。如果您遇到此問題,只需編輯觸發器並將其更新為未來的日期和/或時間即可解決此問題。

在此處輸入圖像描述


列印螢幕

列印螢幕 A

在此處輸入圖像描述

列印螢幕 B

在此處輸入圖像描述

列印螢幕 C

在此處輸入圖像描述

引用自:https://serverfault.com/questions/734035