Перейти к содержимому

Как запустить скрипт на виндовс

  • автор:

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

date

16.11.2022

user

itpro

directory

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

comments

комментариев 8

В этой статье мы рассмотрим, как отследить событие запуска определённой программы (процесса) в Windows и выполнить какое-то действие (запустить скрипт, отправить email и т.д.). В качестве примера мы будем отслеживать запуск процесса notepad.exe , когда пользователь открывает эту программу, Windows автоматически запускает определенный PowerShell скрипт.

Прежде всего в Windows нужно настроить политику аудита процессов. На отдельном компьютере можно настроить политику аудита через редактор локальной GPO ( gpedit.msc ), если нужно настроить политику на компьютерах/серверах домена, воспользуйтесь доменным редактором gpmc.msc .

    Перейдите в раздел Computer Configuration ->Windows Settings ->Security Settings ->Local Policies ->Audit Policy;

политика аудита запуска процессов в windows (Audit process tracking)

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

    событие в event viewer EventID 4688 (A new process has been created).

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

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

    powershell скрипт для получения времени запуска программ и пользователей, которые их запускали

    Теперь нужно создать задание планировщика, которое должно запускаться при появлении события 4688.

    1. Запустите Task Sheduler ( taskschd.msc ) и создайте новое задание ->Create Task;
    2. Укажите имя задания и укажите, что оно должно запускаться для всех пользователей (When running the task, use the following user account ->BUILTIN\Users). Если вы создаете задание планировщика через GPO, используйте формат %LogonDomain%\%LogonUser% ;
      создать задание планировщика
    3. На вкладке Actions задайте действие, которое вы хотите выполнить. В этом примере я запускаю PowerShell скрипт (вызываем программу powershell.exe с атрибутами -ExecutionPolicy Bypass -file «C:\PS\ProcessRun.ps1 »
      запуск powershell скрипта из task sheduler
    4. Теперь нужно привязать задание планировщика к событию Windows. Перейдите на вкладку Trigger ->New ->On an event ->Custom ->New Event Filter;
      создать тригер для event viewer (New Event Filter)
    5. В открывшемся окне нужно указать следующие параметры фильтра событий:Event logs: Security
      Event ID: 4688
      Keywords: Audit Success
      привязать задание к событию windows
    6. Теперь перейдите на вкладку XML и включите опцию Edit query manually. Отредактируйте запрос, добавив в фильтр строку: and *[EventData[Data[@Name=’NewProcessName’] and (Data=’C:\Windows\System32\notepad.exe’)]]
    7. Должен получится такой XML запрос:

    xml запрос для отслеживания события запуска процесса



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

    выполнить 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 можно здесь.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *