
Я пытаюсь выполнить автоматическое резервное копирование некоторых файлов и папок на основе конфигурации. Это делается с помощью 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 никогда не будет завершена, если не включен параметр задания планировщика задач «Запускать только при входе пользователя в систему».
Попробуйте использоватьробокопиявместо.