Embora este seja um hack absoluto, e eu tenho certeza que você já se mudou deste problema, uma solução é criar uma tarefa agendada (usando o comando schtasks do Windows) e executá-la imediatamente para executar a cópia. A tarefa agendada será executada no contexto adequado e poderá ser copiada do servidor sem encontrar o problema de salto duplo, porque se origina da máquina cliente. Tenho certeza de que há uma solução real de nível Ansível para esse problema, mas esta é a minha solução atual.
Seu script de nível mais alto pode usar psutil ou algo semelhante para monitorar a tarefa e não retornar até que a tarefa agendada seja concluída.
Aqui está um script auxiliar que escrevi em Python para realizar isso:
# run_as_scheduled_task.py
import psutil
import subprocess
import time
import sys
to_match = sys.argv[1]
to_run = ' '.join(sys.argv[2:])
print("Running the following command as immediate scheduled task:")
print(to_run)
print("Will return only once process matching wildcard \"{0}\" is no longer found".format(to_match))
subprocess.call('C:\Windows\System32\schtasks /delete /f /tn "QUICKSCHTASK"', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
subprocess.call('C:\Windows\System32\schtasks /create /tn "QUICKSCHTASK" /tr "{0}" /sc ONCE /st 00:00'.format(to_run), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
subprocess.call('C:\Windows\System32\schtasks /run /tn "QUICKSCHTASK"', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
time.sleep(0.1)
def processDead(proc):
print("Process is now dead - {0}".format(proc))
subprocess.call('C:\Windows\System32\schtasks /delete /f /tn "QUICKSCHTASK"', stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
process = None
for proc in psutil.process_iter():
if to_match in proc.name():
gone, still_alive = psutil.wait_procs([proc], None, processDead)
break
Você pode chamar isso de um script de nível mais alto para executar operações e driblar o salto duplo. Muito hacky, mas funciona. Exemplo de uso do script seria:
start /wait py -3 run_as_scheduled_task.py 'robocopy' 'robocopy SOURCE DEST'
Um método alternativo é chamar psexec na máquina de destino com o sinalizador -s para usar a conta do sistema. Mais informações sobre isso aqui: link