Я пытаюсь выполнить автоматическое резервное копирование некоторых файлов и папок на основе конфигурации. Это делается с помощью Powershell 5, который, в свою очередь, полагается на фоновую интеллектуальную службу передачи (BITS). Например.:
Start-BitsTransfer $Source\* $Destination -RetryInterval 60 -RetryTimeout 600
Скрипты Powershell запускаются с помощью летучей мыши:
powershell -ExecutionPolicy unrestricted .\Main.ps1
Пакет выполняется с использованием запланированной задачи:
User account: AD service account
Run: whether user is logged on or not
Когда я запускаю пакет напрямую, используя ту же учетную запись, что и для запланированной задачи, он работает отлично. Когда я запускаю его из планировщика задач, операции BITS выдают следующую ошибку:
Запрошенная операция не была выполнена, потому что пользователь не вошел в сеть. Указанная служба не существует. (Исключение из HRESULT: 0x800704DD)
Я попытался изменить пользователя для службы BITS, установив для нее ту же учетную запись службы, которую я использую для запланированной задачи, но служба больше не запускается:
Не удалось запустить службу фоновой интеллектуальной службы передачи из-за следующей ошибки:
Учетная запись, указанная для этой службы, отличается от учетной записи, указанной для других служб, работающих в том же процессе.
Возвращаясь к запланированной задаче, я изменил ее на запуск «только когда пользователь вошел в систему». Конечно, это имело бы смысл только в том случае, если я установил для этого пользователя автоматический вход (в противном случае он не запустится, если не вошел в систему).
Вопрос: Как я могу автоматизировать резервное копирование с помощью BITS, не полагаясь на такие уловки, как автоматический вход?
Похоже, вы сможете запустить этот сценарий, только когда войдете в систему. Из документации MS "Использование Windows Powershell для создания заданий передачи BITS" найдено Вот.
При использовании командлетов * -BitsTransfer в процессе, который выполняется в неинтерактивном контексте, например в службе Windows, вы не сможете добавлять файлы в задания BITS, что может привести к приостановке. Чтобы задание продолжилось, необходимо войти в систему с идентификатором, который использовался для создания задания передачи. Например, при создании задания BITS в сценарии PowerShell, который выполнялся как задание планировщика заданий, передача BITS никогда не будет завершена, если в планировщике заданий не будет включен параметр задачи «Запускать только при входе пользователя в систему».
Попробуйте использовать Робокопия вместо.