Назад | Перейти на главную страницу

Запуск запланированной задачи как СИСТЕМА с открытым окном консоли

Я автоматически создаю запланированные задачи с помощью этой строки в пакетном скрипте Windows:

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 (на всех машинах) или некоторые проприетарные инструменты, такие как Baretail в Windows. Но поскольку я переключаюсь на эти машины только в случае проблем, я бы предпочел запускать запланированную задачу таким образом, чтобы каждый пользователь сразу видит журнал.

Любой шанс?

Спасибо!

Powershell's get-content -wait будет следовать за файлом вроде tail -f

Я немного сбит с толку ... вы просто "переключаетесь" на эти машины изредка, не хотите устанавливать tail.exe, но вы устанавливаете запланированное задание?

На ум приходят несколько идей:

1) Поместите tail.exe в сетевую папку и используйте его напрямую. Учитывая, что UID - SYSTEM, сетевой папке просто нужен доступ $ COMPUTERNAME, я думаю, что группа - это пользователи, а не авторизованные пользователи, или наоборот.

2) Запустите само задание на рабочем столе пользователя: используйте psexec. Он имеет параметр -i (интерактивный). Так, psexec -accepteula -s -i cmd /k echo hello. Вы можете опустить -s, если запланированное задание уже предоставляет систему. Кроме того, / k используется только для подтверждения концепции, вы бы хотели использовать / c нормально.

3) Напишите программу :)

Один из возможных способов достижения этого - создать задачу, выполняющуюся как зарегистрированный пользователь при входе в систему с помощью schtasks. Задача будет запускать пакетный файл, причем последний бит пакетного файла удаляет задачу и создает другую.

Вы также можете проверить, вышел ли пользователь из системы (здесь может потребоваться творческий подход), поскольку вам не нужно, чтобы их задачи продолжали выполняться, пока машина находится на экране входа в систему или кто-то еще вошел в систему.

Если у них нет доступа для запуска исходного процесса, вы можете запустить его, используя свое исходное задание schtasks, а затем просто заставьте командный файл пользователя читать вывод.

Надеюсь, это понятно?

Если вы ищете что-то похожее на 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