Как запустить скрипт (действие) при запуске (завершении) определенной программы в Windows?

16.11.2022

itpro

PowerShell, Windows 10, Windows Server 2016, Групповые политики

комментариев 8
В этой статье мы рассмотрим, как отследить событие запуска определённой программы (процесса) в Windows и выполнить какое-то действие (запустить скрипт, отправить email и т.д.). В качестве примера мы будем отслеживать запуск процесса notepad.exe , когда пользователь открывает эту программу, Windows автоматически запускает определенный PowerShell скрипт.
Прежде всего в Windows нужно настроить политику аудита процессов. На отдельном компьютере можно настроить политику аудита через редактор локальной GPO ( gpedit.msc ), если нужно настроить политику на компьютерах/серверах домена, воспользуйтесь доменным редактором gpmc.msc .
-
Перейдите в раздел Computer Configuration ->Windows Settings ->Security Settings ->Local Policies ->Audit Policy;

Теперь при запуске любого процесса в Windows в журнале Event Viewer -> Windows Logs -> Security будет появляться событие с EventID 4688 (A new process has been created). В событии указано, кто запустил процесс ( Account name ), имя процесса ( New Process Name ) и имя родительского процесса ( Creator Process Name ).

Вы можете сделать выборку событий запуска программы из журнала событий по определенному процессу с помощью PowerShell командлета Get-WinEvent:
В результате мы получили таблицу с указанием пользователей, которые запускали определённую программу.

Теперь нужно создать задание планировщика, которое должно запускаться при появлении события 4688.
- Запустите Task Sheduler ( taskschd.msc ) и создайте новое задание ->Create Task;
- Укажите имя задания и укажите, что оно должно запускаться для всех пользователей (When running the task, use the following user account ->BUILTIN\Users). Если вы создаете задание планировщика через GPO, используйте формат %LogonDomain%\%LogonUser% ;

- На вкладке Actions задайте действие, которое вы хотите выполнить. В этом примере я запускаю PowerShell скрипт (вызываем программу powershell.exe с атрибутами -ExecutionPolicy Bypass -file «C:\PS\ProcessRun.ps1 »

- Теперь нужно привязать задание планировщика к событию Windows. Перейдите на вкладку Trigger ->New ->On an event ->Custom ->New Event Filter;

- В открывшемся окне нужно указать следующие параметры фильтра событий:Event logs: Security
Event ID: 4688
Keywords: Audit Success
- Теперь перейдите на вкладку XML и включите опцию Edit query manually. Отредактируйте запрос, добавив в фильтр строку: and *[EventData[Data[@Name=’NewProcessName’] and (Data=’C:\Windows\System32\notepad.exe’)]]
- Должен получится такой XML запрос:

Попробуйте теперь запустить процесс notepad.exe. Теперь каждый раз, когда пользователь запускает блокнот, выполняется ваш PowerShell скрипт.

В этом примере я через PowerShell вывожу всплывающее уведомление Windows. Вы можете использовать любой другой PowerShell скрипт — например отправку письма, что угодно.
Если вам нужно отслеживать завершение какой-то программы, используйте Event ID 4689 — A process has exited. После завершения программы иногда бывает нужно запустить скрипт резервного копирования и т.д.
Ранее мы рассматривали PowerShell скрипт для автоматического перезапуска процесса в случае его остановки. Решение с отслеживанием события запуска/остановки процессов более элегантное и не требует наличия запущенного скрипта PowerShell для мониторинга работающих процессов.
Предыдущая статья Следующая статья
Как запускать скрипты через консоль
Довольно часто мне задают вопрос о том, как запустить скрипт через консоль Windows. Многие запускают скрипты двойным кликом и не могут понять, почему скрипт прекращает свою работу. Поэтому решил написать небольшую инструкцию по запуску Perl-скриптов через консоль.
Как запустить консоль:

2. Ввести «cmd» и нажать Enter

Появится подобное окно
Консоль поддерживает множество команд — ntcmds
Однако, для того, чтобы запустить скрипт, достаточно уметь пользоваться одной — cd.
Как запустить скрипт:
Предположим, на диске C: есть директория script, и в ней лежит скрипт test.pl.
Для того, чтобы его запустить, требуется предварительно перейти в директорию со скриптом, набрав в консоли:
cd c:\script
и нажать Enter. На экране отобразится нечто подобное:

Теперь нужно ввести имя скрипта (test.pl) и нажать Enter:

Если скрипт не запустился, и консоль выдала подобный текст:
«test.pl» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
или
‘test.pl’ is not recognized as an internal or external command,
operable program or batch file.
То запускать придется так:
c:\perl\bin\perl.exe test.pl
c:\perl\bin\perl.exe — путь до интерпретатора Perl, test.pl — запускаемый скрипт. Естественно, у вас в системе должен стоять ActivePerl или какой-нибудь другой интерпретатор.
Надеюсь, теперь мне перестанут задавать вопросы про консоль.
Автор Kaimi Опубликовано 9 марта, 2010 8 марта, 2010 Рубрики Windows Метки cmd, Perl, командная строка, консоль, консоль windows
Создание сценария (скрипта) запуска
Эти инструкции подойдут Вам, только если Вы планируете запускать сервер на собственной машине. Большинство распространенных хостингов сделают это за вас.
Написание скрипта запуска
Сперва откройте текстовый редактор, наподобие Atom, Sublime Text или же Notepad. Напишите (или вставьте) скрипт запуска для вашего сервера. Примеры простых скриптов для Windows, macOS и Linux будут показаны ниже. Не забывайте про лимит ОЗУ вашей машины.
The following examples are generic. For a Forge server using Sponge (coremod), change forge-1.12.2-XYZ-universal.jar to whatever your Forge version in the server directory is named. To launch a SpongeVanilla server, change forge-1.12.2-XYZ-universal.jar to the name of the SpongeVanilla.jar file.
Windows
java -Xms1G -Xmx2G -jar forge-1.12.2-XYZ-universal.jar pause
Сохраните ваш скрипт запуска для Windows, как launch.bat .
Launching your server in a Command Prompt or PowerShell environment can lead to the server hanging due to the Quick Edit Mode of these shells. This mode freezes the process when you highlight something or click inside the console window. During this time, messages captured in the log will state that the server skipped many seconds or minutes worth of ticks. You can prevent this from occurring by not highlighting any text on the screen and not clicking inside the window, or by disabling the Quick Edit Mode in the Properties dialogue.
macOS
#!/bin/bash cd "$(dirname "$0")" java -Xms1G -Xmx2G -jar forge-1.12.2-XYZ-universal.jar
Сохраните ваш скрипт запуска для Mac, как launch.command .
Linux
#!/bin/sh cd "$(dirname "$(readlink -fn "$0")")" java -Xms1G -Xmx2G -jar forge-1.12.2-XYZ-universal.jar
Сохраните ваш скрипт запуска для Linux, как launch.sh .
Запуск скрипта запуска
Для вашей же безопасности важно, чтобы скрипт запускался в той папке, где находится сервер. Если что-то пойдёт не так, то мы вас предупредили.
Вы можете запустить ваш скрипт запуска двойным нажатием кнопкой мыши. Если вы используйте консоль или терминал, перейдите в папку с скриптом и запустите его. Не забывайте, Вы должны подтвердить Mojang EULA, чтобы запустить сервер.
По умолчанию, графическая консоль Minecraft-сервера отключена, т. к. она очень сильно нагружает процессор.
Если на Mac вы получаете ошибку об отсутствии прав на запуск исполняемого файла, попробуйте следующее:
- Откройте терминал.
- Введите chmod a+x , с пробелом в конце.
- Перетащите скрипт запуска в терминал.
- Нажмите клавишу Enter.
SpongeDocs v: 7.4.0
Языки Версии stable 7.4.0 6.0.0 5.1.0 Автономное использование Скачать Содействие Исходный код Правка Перевод
Использование планировщика Windows
Планировщик Windows служит для запуска программ по расписанию или в ответ на какие-то события.Запускаться может практически все что угодно, но чаще всего запускают различные скрипты, например powershell.
Планировщик Windows находится в панели управления в разделе “Система и безопасность” — ”Администрирование” — ”Расписание выполнения задач”.

Создадим задание на запуск скрипта при каждом запуске компьютера. Для этого необходимо иметь файл скрипта для запуска. Воспользуемся кнопкой “Создать задачу” в меню “Действия” в правой части экрана.

На первой вкладке введем имя задачи. при желании также можно ввести ее развернутое описание. Укажем от какого пользователя она будет выполняться, должна ли выполняться только после входа в систему (выполнять для пользователей вошедших в систему) или вообще для всех пользователей. Обратите внимание что если запускаемые программы используют сетевые диски и папки, то необходимо указать пароль к учетной записи от которой будет запускаться задача. Выполнить с наивысшими правами означает “Запускать от имени администратора”. Также можно сделать чтобы задача вообще не отображалась при запуске — так называемая скрытая задача.

На закладке триггеры можно задать одно или несколько расписаний запуска. Задание времени и периодичности запуска обычно не представляет сложности.

Обратим внимание что в меню “Начать задачу” есть различные типы запуска задачи: по расписанию, при простое, при входе в систему и т.д.

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

На вкладке условия можно задать дополнительные условия работы задачи — например “Запускать только при питании от сети” — актуально для устройств которым нужна экономия питания — например ноутбуки — “разбудить компьютер для запуска задания” и т.д.

На последней вкладке можно задать дополнительные параметры, например перезапуск задачи при сбое или запуск задачи после пропуска (компьютер был выключен и задание не смогла исполниться в назначенное время).

После нажатия кнопки готово задание создастся и помещается в библиотеку планировщика заданий. Здесь можно им управлять (запускать, останавливать, редактировать, включать/выключать и т.д.).

Также у планировщика есть и другие функции — например импорт/экспорт заданий, ведение журналов запуска, создание простый заданий (задаются только имя, описание, программа, пользователь и расписание) и так далее.
На этом демонстрация возможностей использования планировщика Windows окончена. Другие полезные статьи по настройке Windows Server вы найдете в нашей базе знаний, а заказать сервер на Windows можно здесь.