在工作中,我经常使用 RDP 在远程 Windows 计算机上执行任务。这些任务可能需要很长时间才能完成(数小时/数天/数周),因此我最终会同时打开许多 RDP 会话,每个会话都在运行一项任务。
我遇到的问题是,我必须监视每个 RDP 会话才能知道任务何时完成,这耗费了我大量的时间/精力。
我想要的是某种警报。以下任何一项都可以成为有用的触发器:
- RDP 会话变得安静(因为日志停止滚动)
- 日志停止滚动(这可能是一个通过电子邮件发送给我的远程日志监控工具?)
- 日志中出现某个词,例如“完成”(这可能是最好的解决方案)
- RDP 窗口中 x 段时间内没有任何活动
- 还有别的吗?
似乎 Windows 世界中一定存在这样的工具,但我还没有找到它们。
答案1
您可以使用 tasklist 通过批处理文件执行此操作。您可以将其更改为进程 ID 或您用来监视它的任何进程。显然,无论您使用的进程名称是什么,请将 notepad.exe 替换为该进程的名称。
:start
tasklist /fi "imagename eq notepad.exe" | findstr notepad.exe
if %errorlevel%==1 goto end
goto start
:end
echo %date% %time% The [name of process] is complete on %computername% >> \\unc\sharename\filename.txt
shutdown /l
这样,您的 RDP 会话将被注销,并且您将拥有一个完成时的日志文件。
答案2
我不确定它是否适用于 RDP 窗口内容,但是AutoIT 脚本引擎能够等待某些关键字出现在窗口内 - 您可能想尝试一下。
答案3
使用 RDP 当然是执行任务的一种方式,但我建议您改为实施 WMI 脚本或 powershell 脚本来启动进程,并定期轮询日志(logparser、powershell 任何工具都可以),或者让您运行的脚本在进程退出时将日志发送给您。我建议您发布一个关于如何自动化您当前手动执行的操作的问题。