Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Автоматизация запущенного процесса

Ответить
Настройки темы
CMD/BAT - Автоматизация запущенного процесса

Забанен


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Здравствуйте, уважаемые форумчане. Хочу попросить Вас о помощи в написании скрипта
Попробую описать подробно задачку:

На компьютере, должен постоянно быть запущен процесс sefmail.exe, но по причине человеческих рук, либо сверхестественных сил, этот процесс постоянно закрывается. (человеские руки считаю более очевидным )
Хочется чтобы скрипт, если программа не запущена- писал в лог сообщение о недоступности или в конце концов просто 0 выводил, а затем эту программу бы запускал.
Путь до программы: E:\Program Files (x86)\POST\Sefmail\

Прошу помощи в автоматизации моего процесса

Отправлено: 12:41, 10-06-2021

 

Забанен


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Нашла готовый скрипт здесь: http://forum.oszone.net/thread-348778.html но он лог не пишет, если программа не работает

Отправлено: 12:49, 10-06-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата АннаКузнецова:
Нашла готовый скрипт »
какой из? там несколько решений на разных языках и все рабочие.

Отправлено: 14:05, 10-06-2021 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата АннаКузнецова:
но он лог не пишет »
так допишите
и да, это на PowerShell
Код: Выделить весь код
# Мониторинг процесса (каждые 5 сек), пропал - получим сообщение и запустим процесс через Хсек
$proc = "calc"
Function jbPrc {
  $query    = "Select * from __InstanceDeletionEvent within 5 where TargetInstance ISA 'Win32_Process' and TargetInstance.Name like '%$proc%'"
  $sourceId = "job$proc"
  Register-CimIndicationEvent -Query $query -SourceIdentifier $sourceId -Action {
    Write-Host "Process '$proc' disconnected!"
    'Process - False : '+(Get-Date -f 'dd.MM.yyyy-HH.mm.ss') >> log.txt
    Start-Sleep -s 10
    start $proc
  }
}
jbPrc
принцип тут такой:
-программа, которую он контролирует, должна быть запущена
-после этого запускается скрипт и висит ... везде, в процессах. его окно (можно свернуть. но нельзя закрывать)
-в случае если процесс программы пропал будет сообщение в окне об этом и напишется время в лог
-программа запустится после таймера, в данном скрипте - 10сек
-все начнется заново
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:15, 10-06-2021 | #4


Забанен


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Изображения
Тип файла: png crbgn.png
(39.8 Kb, 7 просмотров)

Я запустила скрипт, при этом поменяла calc на процесс wmail. Но по моему ничего не получилось. Картинку прилагаю. Подскажите пожалуйста, что делаю не так

Отправлено: 14:39, 10-06-2021 | #5


Забанен


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


Elven, я имела ввиду этот скрипт:
'*******************************************************************
' Описание: Запуск отсутствующей программы
'*******************************************************************

Exe = "Notepad.exe" ' Исполнимый файл программы
PathExe = "C:\WINDOWS\system32" ' Путь к файлу (без \ на конце)

On Error Resume Next

If Err.Number = 0 Then
Set WMI = GetObject("winMgmts:")
Set Processes = WMI.ExecQuery("SELECT * FROM Win32_Process Where Name=""" + Exe + """")

Present = False
For Each Process In Processes
Present = (UCase(Process.Name) = UCase(Exe))
' MsgBox Process.Name + vbCrLf + Exe
Next

Set WS = CreateObject("WScript.Shell")

If Not Present Then
WS.Exec PathExe + "\" + Exe
End If

End If

Отправлено: 14:54, 10-06-2021 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6494
Благодарности: 1466

Профиль | Отправить PM | Цитировать


АннаКузнецова, если Sefmail запущен, что у вас в Powershell выводит команда
Код: Выделить весь код
get-process |? path -Match 'Sefmail'
?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:17, 10-06-2021 | #7


Забанен


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


DJ Mogarych,
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
636 58 41588 78456 289 4*617,75 120 sefwmail

Отправлено: 17:03, 10-06-2021 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6494
Благодарности: 1466

Профиль | Отправить PM | Цитировать


Что-то вроде того (powershell):
Код: Выделить весь код
if (!(get-process sefwmail -ErrorAction SilentlyContinue)) {
"$((get-date).tostring()) Sefmail не запущен, запускаю" >> 'E:\Program Files (x86)\POST\Sefmail\SefmailErrorLog.txt'
Start-Process 'E:\Program Files (x86)\POST\Sefmail\sefmail.exe'
}
В планировщике выставляете интервал запуска, предположим, каждую минуту.

Программа - powershell
Добавить аргументы:
Код: Выделить весь код
-file "путь к скрипту\script.ps1" -executionpolicy bypass

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:50, 10-06-2021 | #9


Забанен


Сообщения: 6
Благодарности: 0

Профиль | Цитировать


DJ Mogarych, очень Вам признательна все зааботало. Только вопрос- скрипт ведь не проверяет запущен ли процесс? потому как, работает программа или нет, он в лог пишет Sefmail не запущен, запускаю

Отправлено: 20:04, 10-06-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Автоматизация запущенного процесса

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Проверки запущенного процесса. Svnkill Скриптовые языки администрирования Windows 8 19-05-2021 14:42
CMD/BAT - Проверка занимаемой памяти запущенного процесса KaDirZhan Скриптовые языки администрирования Windows 7 29-04-2021 01:03
Проверка запущенного процесса Anarasius AutoIt 2 25-06-2014 11:39
.NET - Получение PID процесса, запущенного из программы Delirium Программирование и базы данных 2 07-12-2009 02:17
Java - Отслеживание состояния запущенного процесса EvgeniyQQQ Программирование и базы данных 15 02-10-2007 13:20




 
Переход