CMD/BAT - Автоматизация запущенного процесса

Аватара пользователя
АннаКузнецова

CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

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

Попробую описать подробно задачку:



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

Хочется чтобы скрипт, если программа не запущена- писал в лог сообщение о недоступности или в конце концов просто 0 выводил, а затем эту программу бы запускал.

Путь до программы: E:\Program Files (x86)\POST\Sefmail\



Прошу помощи в автоматизации моего процесса Изображение
Аватара пользователя
АннаКузнецова

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

Нашла готовый скрипт здесь:
CMD/BAT - Проверки запущенного процесса.
но он лог не пишет, если программа не работает Изображение
Аватара пользователя
АннаКузнецова

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

Цитата АннаКузнецова:



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




какой из? там несколько решений на разных языках и все рабочие.
Аватара пользователя
alpap

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение alpap »

Цитата АннаКузнецова:



но он лог не пишет
CMD/BAT - Автоматизация запущенного процесса




так допишите

и да, это на 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сек

-все начнется заново
Аватара пользователя
АннаКузнецова

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

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

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
АннаКузнецова

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

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
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение DJ Mogarych »

АннаКузнецова, если Sefmail запущен, что у вас в Powershell выводит команда

Код:

Код: Выделить всё

get-process |? path -Match 'Sefmail'

?
Аватара пользователя
АннаКузнецова

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

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
Аватара пользователя
DJ Mogarych

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение DJ Mogarych »

Что-то вроде того (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
Аватара пользователя
АннаКузнецова

Re: CMD/BAT - Автоматизация запущенного процесса

Сообщение АннаКузнецова »

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

Вернуться в «Скриптовые языки администрирования Windows»