我在批处理窗口脚本中使用此行自动创建计划任务:
schtasks /Create /RU SYSTEM /RP SYSTEM /TN startup-task-%%i /TR %SPEEDWAY_DIR%\%TARGET_DIR%%%i\%STARTUPFILE% /SC HOURLY /MO 1 /ST 17:%%i1:00
我想避免使用特定的用户凭据,因此决定使用 SYSTEM。
现在,在检查任务管理器进程列表时,或者更好的是,直接使用
C:\> schtasks
命令本身,一切正常,任务按预期运行。
但是在这种特殊情况下,我希望有一个打开的控制台窗口,我可以在其中看到日志飞过。
我知道我可以使用
C:\> tail -f thelogfile.log
如果我在 Windows 上安装了例如 cygwin(在所有机器上)或一些专有工具,如 Baretail。但由于我只是在遇到问题时才切换到这些机器,所以我更愿意以每个用户立即看到日志的方式启动计划任务。
任何机会?
谢谢!
Powershell
get-content -wait
将遵循类似的文件tail -f
如果你正在寻找类似于 tail 的东西,你可以使用 more 命令或 type 命令。
实现它的一种可能方法是使用 schtasks 在登录时创建一个以登录用户身份运行的任务。该任务将运行一个批处理文件,批处理文件的最后一位删除该任务并创建另一个。
您可能还想检查用户是否已注销(那里可能需要创造力),因为当机器处于登录屏幕或其他人登录时,您不需要他们的任务继续运行。
如果他们无权运行原始进程,您可以使用原始 schtasks 作业运行它,然后让用户的批处理文件读取输出。
希望这很清楚?
我有点困惑..您只是偶尔“切换”到这些机器,不想安装tail.exe,但您正在安装计划任务?
有几个想法浮现在脑海:
1)将tail.exe放在网络位置,直接使用。鉴于 UID 是 SYSTEM,网络共享只需要 $COMPUTERNAME 访问权限,我认为该组是用户而不是授权用户,反之亦然
2) 在用户桌面上运行作业本身:使用 psexec。它有一个 -i(interactive) 选项。所以,
psexec -accepteula -s -i cmd /k echo hello
。如果 sched 作业已经在提供系统,则可以省略 -s。此外, /k 仅用于概念证明,您通常希望使用 /c。3)编写程序:)