![]() |
как следить за службой?
проблема такая, у нас стоит сервер печати, там подключены принтера, через них идет печать (ну это не суть важна), так вот, по какой то причине происходит забивание задания в одном из принтеров и появляется служба WINWORD, при удалении ее печать проходит, как мне следить за этой службой без захода на сервер?
|
Цитата:
Ещё раз чётко и внятно объясните проблему (только без "ну это не суть важна"), а то и ответы будут такими же. |
не правильно выразился:) не служба, а процесс WINWORD.exe
т.е. при печатании процесс WINWORD.exe появляется, а когда печать забивается (т.е. копятся задания на печать), то я этот процесс убиваю и печать проходит вся, т.е. мне надо мониторить этот процесс, чтоб каждый раз не залазить на сервак и не смотреть зависла ли печать или нет, может есть какая прога, чтоб смс отправляла |
Удалите для начала Microsoft Office с сервера печати. Или хотя бы выясните, с какой радости Word запускается при создании очереди печати.
|
microsoft office на сервер нужен, подскажите как можно мониторить процесс удаленно, не залазя на сервак?
|
|
Цитата:
$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) "60" - количество секунд, которое диалог будет отображаться на экране, если пользователь никак не отреагирует на него. Дальше можно диалоговое окно превратить в "Yes/no"-запрос и по ответу Да принудительно выполнять завершение удаленного процесса (только я сам не силен в powershell - так кропаю помаленьку, когда задачки появляются). |
Цитата:
|
Не удается загрузить файл 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 - указываешь имя процесса. Скрипт запускаешь локально на своей машине с определенным интервалом... попробуй сначала руками запускать. |
QRS - Спасибо!! все получилось!
|
еще такой вопрос, а можно как нить проследить занимаемую память процесса? допустим выше 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 модератору: пора тему переносить в раздел программирование!!! :) |
QRS - спасибо, все получилось!! можно закрывать тему
PS: надо изачать powershell:) |
Время: 20:14. |
Время: 20:14.
© OSzone.net 2001-