Как правильно запускать скрипты Powershell, содержащие операции BITS, из планировщика задач?

Как правильно запускать скрипты Powershell, содержащие операции BITS, из планировщика задач?

Я пытаюсь выполнить автоматическое резервное копирование некоторых файлов и папок на основе конфигурации. Это делается с помощью Powershell 5, который в свою очередь полагается на Background Intelligent Transfer Service (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

Похоже, вы сможете запустить этот скрипт только после входа в систему. Из документации MS «Использование Windows Powershell для создания заданий передачи BITS»здесь.

При использовании командлетов *-BitsTransfer из процесса, работающего в неинтерактивном контексте, например, службы Windows, вы не сможете добавлять файлы в задания BITS, что может привести к приостановленному состоянию. Для продолжения задания необходимо войти в систему с идентификатором, который использовался для создания задания передачи. Например, при создании задания BITS в скрипте PowerShell, который был выполнен как задание планировщика задач, передача BITS никогда не будет завершена, если не включен параметр задания планировщика задач «Запускать только при входе пользователя в систему».

Попробуйте использоватьробокопиявместо.

Связанный контент