|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрипт, проверяющий программу и предлагающий ее запустить если она вырубилась |
|
|
VBS/WSH/JS - Скрипт, проверяющий программу и предлагающий ее запустить если она вырубилась
|
Старожил Сообщения: 282 |
Профиль | Сайт | Отправить PM | Цитировать
Всем привет
исходные данные: на компе должна работать программа c:programm files/proga.exe периодически она вылетает и ее приходится запускать руками пояснение - прога на удаленном компе и там нет мышки клавиатуры (там тач пад можно пальцем в экран ткнуть), чтобы пользователь смог зам ее запустить (мышкой и клавиатурой прогу запустить можно только из диспетчера задач). Приходится подключаться по тимке и включать им ее. надо: скрипт, который будет, к примеру, каждые 10 минут проверять наличие процесса proga.exe и если такой процесс не обнаружен, выводить окно на экран с предложением запустить программу Да/Нет соответственно при нажатии на Да - запускается proga.exe а при нажатии на Нет скрипт уходит в свой обычный режим и через 10 минут снова предложит запустить прогу. И еще этот скрипт должен выключать процесс експлорера (при вылете программы этой остается окно "Мой компьютер" Option Explicit Dim objWMIService, objProcess, colProcess Dim strComputer, strProcessKill Dim WshShell strComputer = "." strProcessKill = "'explorer.exe'" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colProcess = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name = " & strProcessKill ) For Each objProcess in colProcess objProcess.Terminate() Next Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "c:\Program Files\PROGA.exe" & Chr(34), 0 Set WshShell = Nothing WScript.Quit |
|
------- Отправлено: 08:28, 28-08-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата koresaram:
Цитата koresaram:
Я бы сделал проще — добавил путь типа: в раздел реестра, отвечающий за автозагрузку, каждой машины, либо в общий раздел автозагрузки, либо в раздел автозагрузки пользователя. Мне сложно сказать, как именно для Вас будет проще сделать. |
||
Отправлено: 19:46, 28-08-2018 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата koresaram:
Цитата koresaram:
script.ps1 add-type -assembly system.windows.forms $process = 'notepad' $start = {c:\windows\notepad.exe} do { if (!($p = ps $process -ea 0)){ &$start $p = ps $process } $btn = [windows.forms.messageboxbuttons]::yesno $t1 = [Windows.Forms.MessageBoxIcon]::Question $t2 = [Windows.Forms.MessageBoxDefaultButton]::Button1 $top = [Windows.Forms.MessageBoxOptions]::ServiceNotification # .topmost = $true wait-process $p.id $res = [windows.forms.messagebox]::show($process, "Запускаем файл?",$btn,$t1,$t2,$top) } while ($res -ne 'No') run.bat script.ps1
add-type -assembly system.windows.forms $process = 'notepad' $start = {c:\windows\notepad.exe} do { if (!($p = ps $process -ea 0)){ &$start $p = ps $process } $form = new-object windows.forms.form $form.autosize = $true $form.autosizemode = [windows.forms.autosizemode]::growandshrink $form.formborderstyle = [windows.forms.formborderstyle]::fixedtoolwindow $form.controlbox = $false $form.sizegripstyle = [windows.forms.sizegripstyle]::hide $form.text = 'Запустить' + ' ' + $process + '?' $form.showintaskbar = $false $form.topmost = $true $form.startposition = 'CenterScreen' $btnyes = new-object windows.forms.button $btnyes.text = 'Да' $btnyes.location = new-object system.drawing.point(3,10) $btnyes.dialogresult = [windows.forms.dialogresult]::ok $form.controls.add($btnyes) $btnno = new-object windows.forms.button $btnno.text = 'Нет' $btnno.location = new-object system.drawing.point(110,10) $btnno.dialogresult = [windows.forms.dialogresult]::no $form.controls.add($btnno) wait-process $p.id $res = $form.showdialog() } while ($res -ne 'No') |
||
------- Последний раз редактировалось YuS_2, 28-08-2018 в 21:56. Причина: поправил код Отправлено: 20:23, 28-08-2018 | #22 |
Старожил Сообщения: 282
|
Профиль | Сайт | Отправить PM | Цитировать опаньки! еще нюанс вариант появился
а как добавить вызов этого скрипта в другой скрипт на вбс, который стоит в планировщике? на кассах в планировщике есть скрипт 1.vbs который выполняется раз в минуту. Туда в него же можно включить запуск нашего скрипта? |
------- Отправлено: 21:09, 28-08-2018 | #23 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Цитата YuS_2:
$res = [Windows.Forms.MessageBox]::Show($process, "Запускаем файл?", $btn, [Windows.Forms.MessageBoxIcon]::Question, [Windows.Forms.MessageBoxDefaultButton]::Button1, [Windows.Forms.MessageBoxOptions]::ServiceNotification) Самым правильным, конечно, было бы использование перегрузки метода с использованием первым параметром следующего: Цитата:
Цитата koresaram:
|
||||
Отправлено: 21:24, 28-08-2018 | #24 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Дык, это ведь не powershell виноват в том, что консоль far-а имеет свое, особое мнение и батники с powershell-ом запускает прямо в ней... хотя, так работает любая консоль, такшта и фар тут тоже, особо не виноват... Но, всё же, это правильно, имхо, т.к. целью, как раз, было скрыть консоль, чтобы глаза не мозолила. Ну и в крайнем случае, можно ведь powershell в отдельном окне запускать, через start... Цитата Iska:
Оказывается есть вариант... я-то потыкал гугль, но на глаза не попалось ничего аналогичного, а усиленно рыть не стал. |
||
------- Отправлено: 21:47, 28-08-2018 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 21:56, 28-08-2018 | #26 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Iska:
И там же есть запуск скрытых консолей powershell и он там именно через батник с командами start "", так что вполне себе вариант, т.к. консоль из которой происходит запуск, остается нетронутой. И на всякий случай, там же, есть скрипт прибития скрытых консолей: |
|
------- Отправлено: 22:36, 28-08-2018 | #27 |
fascinating rhythm Сообщения: 6493
|
Профиль | Отправить PM | Цитировать Какой ужас.
Извините за оффтоп, но не пытались ли разобраться с тем, почему вообще программа вылетает? Зачем вообще нужно это взаимодействие с пользователем и запуск руками чего бы то ни было, если нужно, чтобы программа всегда работала? |
------- Отправлено: 11:33, 30-08-2018 | #28 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - проверять запущена программа, а если она запущена то закрывать ее | DetFedot | Скриптовые языки администрирования Windows | 4 | 26-02-2018 15:32 | |
CMD/BAT - [решено] Проверка запущена ли программа, если нет то запустить ее... | Svnkill | Скриптовые языки администрирования Windows | 2 | 12-02-2018 13:18 | |
CMD/BAT - [решено] Как запустить программу и тут же ее убить? | Pozia | Скриптовые языки администрирования Windows | 1 | 20-08-2015 12:47 | |
Кто знает такой сканер, программу Hitman Pro ? Она надежная не вирус ли она сама? | micro8 | Лечение систем от вредоносных программ | 0 | 22-09-2010 13:08 | |
Как запустить программу, чтобы пользователь ее невидел? | Kvasia | Microsoft Windows 2000/XP | 11 | 06-05-2006 02:24 |
|