以 SYSTEM 身份运行计划任务并打开控制台窗口

以 SYSTEM 身份运行计划任务并打开控制台窗口

我正在批处理窗口脚本中使用此行自动创建计划任务:

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

如果我安装了 cygwin(在所有机器上)或一些专有工具(如 Windows 上的 Baretail),那么我就可以启动计划任务。但由于我只在出现问题时才切换到这些机器,因此我更愿意以这种方式启动计划任务:每一个用户立即看到日志。

任何机会?

谢谢!

答案1

Powershellget-content -wait将跟踪类似以下文件tail -f

答案2

如果您正在寻找类似于 tail 的东西,您可以使用 more 命令或 type 命令。

C:\>more /?
Displays output one screen at a time.

MORE [/E [/C] [/P] [/S] [/Tn] [+n]] < [drive:][path]filename
command-name | MORE [/E [/C] [/P] [/S] [/Tn] [+n]]
MORE /E [/C] [/P] [/S] [/Tn] [+n] [files]

    [drive:][path]filename  Specifies a file to display one
                            screen at a time.

    command-name            Specifies a command whose output
                            will be displayed.

    /E      Enable extended features
    /C      Clear screen before displaying page
    /P      Expand FormFeed characters
    /S      Squeeze multiple blank lines into a single line
    /Tn     Expand tabs to n spaces (default 8)

            Switches can be present in the MORE environment
            variable.

    +n      Start displaying the first file at line n

    files   List of files to be displayed. Files in the list
            are separated by blanks.

    If extended features are enabled, the following commands
    are accepted at the -- More -- prompt:

    P n     Display next n lines
    S n     Skip next n lines
    F       Display next file
    Q       Quit
    =       Show line number
    ?       Show help line
    <space> Display next page
    <ret>   Display next line

答案3

实现此目标的一种可能方法是使用 schtasks 创建一个以登录用户身份运行的任务。该任务将运行批处理文件,批处理文件的最后一部分将删除该任务并创建另一个任务。

您可能还想进行一些检查以查看用户是否已注销(可能需要发挥创造力),因为您不需要在机器处于登录屏幕或其他人登录时继续运行他们的任务。

如果他们无权运行原始进程,您可以使用原始 schtasks 作业运行它,然后只需让用户的批处理文件读取输出。

希望这清楚了吗?

答案4

我有点困惑..你只是偶尔“切换”到这些机器,不想安装 tail.exe,但你却在安装计划任务?

我想到了一些想法:

1) 将 tail.exe 放在网络位置,然后直接使用。鉴于 UID 是 SYSTEM,网络共享只需要 $COMPUTERNAME 访问权限,我认为该组是用户而不是授权用户,反之亦然

2) 在用户桌面上运行作业本身:使用 psexec。它有一个 -i(交互)选项。所以,psexec -accepteula -s -i cmd /k echo hello。如果计划作业已经提供系统,则可以省略 -s。此外,/k 仅用于概念验证,您通常希望使用 /c。

3)编写一个程序:)

相关内容