在远程桌面中使用 pywinrm 启动分离进程
Start detached process using pywinrm in remote desktop
为了远程管理 windows 客户端,我正在使用 Pywinrm。我要完成的任务是执行一个脚本,我不想等待执行完成。但我需要那个
的进程 ID
为此,我想出了 power shell 命令 Start-Process
可以在本地正常执行
$process = Start-Process -FilePath "fio" "Arguments" -PassThru -RedirectStandardError C:/SMB-Share-991A-F73SV-fio.alogs.std.err.bak -RedirectStandardOutput C:/SMB-Share-991A-F73SV-fio.alogs.std.out.bak; echo $process.id
上面的命令在我本地执行时工作正常,它 returns 我的进程 ID 和命令在单独的 window.
中执行
但是当我使用 pywinrm 调用它时,它似乎没有按预期工作。
session = winrm.Session(host, auth=(user, password), transport='credssp')
result = session.run_ps(script)
所以在这里我期待它应该在执行后立即给我 processid。但目前,它正在等待整个过程完成,然后 returns id。
关于在分离模式下执行命令我应该做什么的任何建议。
谢谢,
尼西特
不确定这是否会得到你想要的结果,但是你可以通过检查那个包的代码来做这样的事情:
session = winrm.Session(host, auth=(user, password), transport='credssp')
prtl = session.protocol
encoded_ps = b64encode(script.encode('utf_16_le')).decode('ascii')
command = 'powershell -encodedcommand {0}'.format(encoded_ps)
shell_id = prtl.open_shell()
command_id = prtl.run_command(shell_id, command)
为了远程管理 windows 客户端,我正在使用 Pywinrm。我要完成的任务是执行一个脚本,我不想等待执行完成。但我需要那个
的进程 ID为此,我想出了 power shell 命令 Start-Process
可以在本地正常执行
$process = Start-Process -FilePath "fio" "Arguments" -PassThru -RedirectStandardError C:/SMB-Share-991A-F73SV-fio.alogs.std.err.bak -RedirectStandardOutput C:/SMB-Share-991A-F73SV-fio.alogs.std.out.bak; echo $process.id
上面的命令在我本地执行时工作正常,它 returns 我的进程 ID 和命令在单独的 window.
中执行但是当我使用 pywinrm 调用它时,它似乎没有按预期工作。
session = winrm.Session(host, auth=(user, password), transport='credssp')
result = session.run_ps(script)
所以在这里我期待它应该在执行后立即给我 processid。但目前,它正在等待整个过程完成,然后 returns id。
关于在分离模式下执行命令我应该做什么的任何建议。
谢谢, 尼西特
不确定这是否会得到你想要的结果,但是你可以通过检查那个包的代码来做这样的事情:
session = winrm.Session(host, auth=(user, password), transport='credssp')
prtl = session.protocol
encoded_ps = b64encode(script.encode('utf_16_le')).decode('ascii')
command = 'powershell -encodedcommand {0}'.format(encoded_ps)
shell_id = prtl.open_shell()
command_id = prtl.run_command(shell_id, command)