
Estoy intentando realizar una copia de seguridad automática de algunos archivos y carpetas según una configuración. Esto se hace utilizando Powershell 5, que a su vez se basa en el Servicio de transferencia inteligente en segundo plano (BITS). P.ej:
Start-BitsTransfer $Source\* $Destination -RetryInterval 60 -RetryTimeout 600
Los scripts de Powershell se ejecutan usando un bat:
powershell -ExecutionPolicy unrestricted .\Main.ps1
El lote se ejecuta mediante una tarea programada:
User account: AD service account
Run: whether user is logged on or not
Cuando ejecuto el lote directamente usando la misma cuenta configurada en la tarea programada, se ejecuta perfectamente. Cuando lo ejecuto desde el Programador de tareas, las operaciones BITS emiten el siguiente error:
La operación solicitada no se realizó porque el usuario no inició sesión en la red. El servicio especificado no existe. (Excepción de HRESULT: 0x800704DD)
Intenté cambiar el usuario del servicio BITS configurándolo en la misma cuenta de servicio que uso para la tarea programada, pero el servicio ya no se inicia:
El servicio Servicio de transferencia inteligente en segundo plano no pudo iniciarse debido al siguiente error:
La cuenta especificada para este servicio es diferente de la cuenta especificada para otros servicios que se ejecutan en el mismo proceso.
Volviendo a la tarea programada, cambié para ejecutar "solo cuando el usuario ha iniciado sesión". Por supuesto, esto tendría sentido sólo si configuro el inicio de sesión automático para este usuario (de lo contrario, no se ejecutará si no ha iniciado sesión).
Pregunta:¿Cómo puedo automatizar una copia de seguridad usando BITS sin depender de trucos como el inicio de sesión automático?
Respuesta1
Parece que solo podrá ejecutar ese script cuando haya iniciado sesión. De la documentación de MS "Uso de Windows Powershell para crear trabajos de transferencia de BITS" encontradaaquí.
Cuando utiliza cmdlets *-BitsTransfer desde un proceso que se ejecuta en un contexto no interactivo, como un servicio de Windows, es posible que no pueda agregar archivos a trabajos BITS, lo que puede resultar en un estado suspendido. Para que el trabajo continúe, se debe iniciar sesión en la identidad que se utilizó para crear un trabajo de transferencia. Por ejemplo, al crear un trabajo BITS en un script de PowerShell que se ejecutó como un trabajo del Programador de tareas, la transferencia de BITS nunca se completará a menos que la configuración de tareas del Programador de tareas "Ejecutar solo cuando el usuario haya iniciado sesión" esté habilitada.
Intenta usarrobocopiaen cambio.