Показать полную графическую версию : [решено] как следить за службой?
BANDI-OGA
14-07-2010, 04:36
проблема такая, у нас стоит сервер печати, там подключены принтера, через них идет печать (ну это не суть важна), так вот, по какой то причине происходит забивание задания в одном из принтеров и появляется служба WINWORD, при удалении ее печать проходит, как мне следить за этой службой без захода на сервер?
Angry Demon
14-07-2010, 07:54
появляется служба WINWORD
По секрету скажу, не существует в природе такой службы.
Ещё раз чётко и внятно объясните проблему (только без "ну это не суть важна"), а то и ответы будут такими же.
BANDI-OGA
14-07-2010, 09:10
не правильно выразился:) не служба, а процесс WINWORD.exe
т.е. при печатании процесс WINWORD.exe появляется, а когда печать забивается (т.е. копятся задания на печать), то я этот процесс убиваю и печать проходит вся, т.е. мне надо мониторить этот процесс, чтоб каждый раз не залазить на сервак и не смотреть зависла ли печать или нет, может есть какая прога, чтоб смс отправляла
Удалите для начала Microsoft Office с сервера печати. Или хотя бы выясните, с какой радости Word запускается при создании очереди печати.
BANDI-OGA
14-07-2010, 12:06
microsoft office на сервер нужен, подскажите как можно мониторить процесс удаленно, не залазя на сервак?
Process Explorer v12.04 (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
как можно мониторить процесс удаленно »
Рекомендую powershell:
$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
if($pr -eq $null){процесс не обнаружен}else{процесс работает}
Естественно этот код запускается под учетной записью, имеющей админские права на удаленном компьютере.
BANDI-OGA
15-07-2010, 06:36
Рекомендую powershell:
$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
if($pr -eq $null){процесс не обнаружен}else{процесс работает}
Естественно этот код запускается под учетной записью, имеющей админские права на удаленном компьютере.
я не сильно шарю в написании скриптов, подскажите, проверяю в powershell Ваш скрипт (допустим на taskmgr.exe процессе), за место {процесс не обнаружен} вставляю taskmgr.exe, скрипт у меня запускает этот taskmgr.exe или подскажите разобраться
Вместо процесс обнаружен вставь:
$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ :(((((",0)
"60" - количество секунд, которое диалог будет отображаться на экране, если пользователь никак не отреагирует на него.
Дальше можно диалоговое окно превратить в "Yes/no"-запрос и по ответу Да принудительно выполнять завершение удаленного процесса (только я сам не силен в powershell - так кропаю помаленьку, когда задачки появляются).
BANDI-OGA
16-07-2010, 05:43
Вместо процесс обнаружен вставь:
$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ ((((",0)
"60" - количество секунд, которое диалог будет отображаться на экране, если пользователь никак не отреагирует на него.
Дальше можно диалоговое окно превратить в "Yes/no"-запрос и по ответу Да принудительно выполнять завершение удаленного процесса (только я сам не силен в powershell - так кропаю помаленьку, когда задачки появляются).
подскажи, как привязать этот скриптик к процессу?
BANDI-OGA
16-07-2010, 06:01
Не удается загрузить файл C:\Users\xxxx\Desktop\БезИмени1.ps1, так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения
дополнительных сведений.
At line:0 char:0
подскажите в чем проблема?
подскажи, как привязать этот скриптик к процессу? »
не понял вопроса...
пишешь powershell скрипт:
$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
if($pr -eq $null){}else{
$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ ((((",0)
}
Вместо COMPUTERNAME указываешь реальное сетевое имя сервера, который собираешься мониторить; вместо WINWORD.EXE - указываешь имя процесса.
Скрипт запускаешь локально на своей машине с определенным интервалом... попробуй сначала руками запускать.
BANDI-OGA
18-07-2010, 07:07
QRS - Спасибо!! все получилось!
BANDI-OGA
18-07-2010, 11:00
еще такой вопрос, а можно как нить проследить занимаемую память процесса? допустим выше 30 метров при запуске скрипта, происходит обнаружение процесса, и он выдает окошко процесс завис
т.е. процесс у меня часто запускается, только не часто зависает
Запусти соответствующий процесс на сервере.
Открой окно powershell, в нем запусти строку, которой проверяешь наличие процесса:
$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
дальше набери:
$pr
или
$pr | gm
там увидишь все свойства, которые есть у процесса; в гугле можешь посмотреть что значит каждый из параметров.
За объем памяти, по-моему отвечает $pr.WS:
if($pr -eq $null){echo "он не запустился"}else{
if($pr.WS -gt 30Mb) {
$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ ((((",0)
}
else{
echo "запустился, но ОЗУ меньше 30Мб!"
}
}
но может быть будет проще сразу завершить процесс?!:
if($pr -eq $null){echo "он не запустился"}else{
if($pr.WS -gt 30Mb) {$pr.Terminate(0)}
}
PS модератору: пора тему переносить в раздел программирование!!! :)
BANDI-OGA
20-07-2010, 04:50
QRS - спасибо, все получилось!! можно закрывать тему
PS: надо изачать powershell:)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.