Como executar corretamente scripts Powershell contendo operações BITS do Agendador de Tarefas?

Como executar corretamente scripts Powershell contendo operações BITS do Agendador de Tarefas?

Estou tentando realizar um backup automático de alguns arquivos e pastas com base em uma configuração. Isso é feito usando o Powershell 5, que por sua vez depende do Background Intelligent Transfer Service (BITS). Por exemplo:

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

Os scripts Powershell são executados usando um morcego:

powershell -ExecutionPolicy unrestricted .\Main.ps1

O lote é executado usando uma tarefa agendada:

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

Quando executo o lote diretamente usando a mesma conta definida na tarefa agendada, ele funciona perfeitamente. Quando o executo no Agendador de tarefas, as operações do BITS emitem o seguinte erro:

A operação solicitada não foi executada porque o usuário não efetuou logon na rede. O serviço especificado não existe. (Exceção de HRESULT: 0x800704DD)

Tentei alterar o usuário do serviço BITS, configurando-o para a mesma conta de serviço que utilizo para a tarefa agendada, mas o serviço não inicia mais:

O serviço Background Intelligent Transfer Service falhou ao iniciar devido ao seguinte erro:
A conta especificada para este serviço é diferente da conta especificada para outros serviços em execução no mesmo processo.

Voltando à tarefa agendada, mudei para executar "somente quando o usuário estiver logado". Claro, isso só faria sentido se eu configurasse o logon automático para esse usuário (caso contrário, ele não será executado se não estiver logado).

Pergunta:Como posso automatizar um backup usando BITS sem depender de truques como o logon automático?

Responder1

Parece que você só conseguirá executar esse script quando estiver logado. Na documentação do MS "Usando o Windows Powershell para criar trabalhos de transferência de BITS" encontradaaqui.

Ao usar cmdlets *-BitsTransfer em um processo executado em um contexto não interativo, como um serviço do Windows, talvez você não consiga adicionar arquivos a trabalhos do BITS, o que pode resultar em um estado suspenso. Para que a tarefa continue, a identidade usada para criar uma tarefa de transferência deverá estar conectada. Por exemplo, ao criar um trabalho BITS em um script do PowerShell que foi executado como um trabalho do Agendador de Tarefas, a transferência do BITS nunca será concluída, a menos que a configuração de tarefa do Agendador de Tarefas "Executar somente quando o usuário estiver conectado" esteja habilitada.

Tente usarrobocópiaem vez de.

informação relacionada