我正在尝试自动化一个过程,用户可以在 WSL 中建立 ssh 隧道,然后使用该隧道通过 MSTSC 进行 RDP 连接。同一个脚本可能会使用隧道启动 MSTSC 的多个实例(即在所有情况下,主机都是本地主机,但使用不同的端口号)。在 MS-Windows 上无法本地创建隧道/可能在 WSL 中运行 RDP 客户端的范围,但这将是最后的手段。
虽然我可以轻松地编写 ssh 部分脚本并从 WSL 启动 MSTSC.EXE,但我的脚本无法看到 MSTSC 随后发生的情况。我希望能够(从 WSL 中的脚本)跟踪具体的MSTSC 实例仍在运行,并在某些情况下终止它。
从 WSL 运行“MSTSC.EXE”(或其他本机 MS-Windows .exe)时,会产生 Linux 进程 - 这是一个幽灵。MS-Windows 进程退出后,Linux PID 仍然存在。终止 Linux PID 对正在运行的 MS-Windows 进程没有影响。
TASKKILL.EXE 将从 WSL 终止该进程 - 但为此我需要 MS-Windows PID。
我不知道是否可以从客户端使用 TSDISCON.EXE - 这允许我结束 RDP 会话,但 1) 我需要从客户端运行的某些东西,2) 我既没有 MS-Windows PID 也没有会话名称。
MSTSC 不允许我指定会话名称。
有没有什么办法可以终止从 WSL 启动的特定 MSTSC 实例?