如何從任務計劃程式正確執行包含 BITS 操作的 Powershell 腳本?

如何從任務計劃程式正確執行包含 BITS 操作的 Powershell 腳本?

我正在嘗試根據配置對某些文件和資料夾執行自動備份。這是使用 Powershell 5 完成的,而 Powershell 5 又依賴後台智慧傳輸服務 (BITS)。例如:

Start-BitsTransfer $Source\* $Destination -RetryInterval 60 -RetryTimeout 600

Powershell 腳本使用 bat 執行:

powershell -ExecutionPolicy unrestricted .\Main.ps1

該批次是使用計劃任務執行的:

User account: AD service account
Run: whether user is logged on or not

當我使用計劃任務上設定的相同帳戶直接執行批次時,它運行得很好。當我從任務計劃程式執行它時,BITS 操作會發出以下錯誤:

由於使用者尚未登入網絡,因此未執行所要求的操作。指定的服務不存在。 (HRESULT 異常:0x800704DD)

我嘗試更改 BITS 服務的用戶,將其設定為與我用於排程任務的服務帳戶相同,但該服務不再啟動:

由於下列錯誤,背景智慧傳輸服務服務無法啟動:
為此服務指定的帳戶與為相同進程中執行的其他服務指定的帳戶不同。

回到計劃任務,我已更改為“僅當使用者登入時”運行。當然,只有當我為此用戶設定自動登入時,這才有意義(否則,如果未登錄,它將不會運行)。

問題:如何使用 BITS 自動執行備份而不依賴自動登入等技巧?

答案1

看來您只有在登入後才能執行該腳本。這裡

當您在非互動式上下文(例如 Windows 服務)中執行的進程中使用 *-BitsTransfer cmdlet 時,您可能無法將檔案新增至 BITS 作業,這可能會導致暫停狀態。為了使作業繼續進行,必須登入用於建立傳輸作業的身份。例如,在執行任務排程器作業的 PowerShell 腳本中建立 BITS 作業時,除非啟用任務排程器的任務設定“僅在使用者登入時執行”,否則 BITS 傳輸將永遠不會完成。

嘗試使用機器人複製反而。

相關內容