Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перезапуск служб с помощью батника (http://forum.oszone.net/showthread.php?t=218165)

goodguy 17-10-2011 12:54 1775231

Перезапуск служб с помощью батника
 
Всем привет,
Возникла такая проблема, нужно организовать ускоренный перезапуск нескольких служб.
Такой вариант работает из коммандной строки:
net stop [служба] && net start [служба], но из батника не хочет.
Окно просто появляется и тут же исчезает.
Как это можно записать в батник, чтобы всё работало?

Iska 17-10-2011 13:28 1775259

Цитата:

Цитата goodguy
Окно просто появляется и тут же исчезает. »

Проверяйте, запуская пакетный файл из окна командной строки или из-под Far Manager'а.

Название службы, версия ОС?

goodguy 17-10-2011 17:50 1775425

Цитата:

Название службы, версия ОС?
ОС В основном Windows 7 Professional, но есть и XP Professional SP3. Это нужно для нескольких компов, так как в качестве сервера печати у нас используется screwdrivers, а эта программа малость глючит, и время от времени полностью отрубает в RDP возможность вызова диалога печати. Лечится только перезагрузкой компа, либо перезапуском служб удаленных рабочих столов и печати.

Iska 17-10-2011 18:37 1775459

goodguy, речь идёт именно о «TermService» и «Spooler»?

goodguy 17-10-2011 19:05 1775499

Да. Именно о них :)
Но вместе с TermService должна перезапускаться еще и служба перенаправления портов

Iska 18-10-2011 03:09 1775811

goodguy, на Windows XP я наблюдаю такую картину:
Код:

wmic.exe Service where "Name = 'Spooler' OR Name = 'TermService'" get Name, Caption, AcceptStop /value
Цитата:

Код:

AcceptStop=TRUE
Caption=Диспетчер очереди печати
Name=Spooler


AcceptStop=FALSE
Caption=Службы терминалов
Name=TermService


А как у Вас обстоит дело с возможностью останова службы «TermService»? Каким образом у Вас получалось:
Цитата:

Цитата goodguy
либо перезапуском служб удаленных рабочих столов »

Меняли свойства самой службы?

goodguy 18-10-2011 15:09 1776135

Цитата:

А как у Вас обстоит дело с возможностью останова службы «TermService»? Каким образом у Вас получалось:
Вот так:
Код:

Microsoft Windows [Version 6.1.7600]  (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены. 
C:\Users\Konstantin>wmic.exe Service where "Name = 'Spooler' OR Name = 'TermServ  ice'" get Name, Caption, AcceptStop /value   
AcceptStop=TRUE 
Caption=Диспетчер печати 
Name=Spooler     
AcceptStop=TRUE 
Caption=Службы удаленных рабочих столов 
Name=TermService         
C:\Users\Konstantin>

Цитата:

Меняли свойства самой службы?
Да нет, ничего не менял. Хотя может screwdrivers меняет что-то, но утверждать не могу

Iska 18-10-2011 16:35 1776197

Тогда пробуйте запустить из командной строки пакетный файл, который Вы и предлагали:
Код:

net.exe stop Spooler && net.exe start Spooler
net.exe stop TermService && net.exe start TermService

Update:
1) на Server 2008 R2 у меня также для «TermService» — «AcceptStop=TRUE»;
2) как заработает — обратите внимание, на зависимые от «TermService» службы («FastUserSwitchingCompatibility» — на XP и, возможно, «UmRdpService» — на Windows 7 [последнее под вопросом, ибо я-то смотрел на сервере]). И надо будет проверять: если какие-то зависимые службы были запущены до исполнения старт-стопа «TermService» — потребно их будет так же стартовать.

goodguy 18-10-2011 16:41 1776201

Отлично работает. Да я уже и до этого пробовал. Из коммандной строки пашет.
Код:

Microsoft Windows [Version 6.1.7600]  (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.   
C:\Users\Konstantin>net.exe stop Spooler && net.exe start Spooler 
Служба "Диспетчер печати" останавливается. 
Служба "Диспетчер печати" успешно остановлена.   
Служба "Диспетчер печати" запускается.  Служба "Диспетчер печати" успешно запущена.     
C:\Users\Konstantin>


Iska 18-10-2011 16:47 1776212

goodguy, я обновил свой предыдущий пост.

Цитата:

Цитата goodguy
Отлично работает. Да я уже и до этого пробовал. Из коммандной строки пашет. »

Ещё раз: создать именно пакетный файл указанного вида. Запустить его из командной строки. Что получается?

goodguy 18-10-2011 17:04 1776225

Аа, не сразу понял, что нужно =)
Код:

 
C:\Users\Konstantin\Desktop>net.exe stop Spooler  && net.exe start Spooler 
Служба "Диспетчер печати" останавливается. 
Служба "Диспетчер печати" успешно остановлена.   
Служба "Диспетчер печати" запускается.
Служба "Диспетчер печати" успешно запущена.     
C:\Users\Konstantin\Desktop>net.exe stop TermService  && net.exe start TermService 
Следующие службы являются зависимыми от службы
"Службы удаленных рабочих столов"  . 
Останов службы "Службы удаленных рабочих столов" приведет также к останову этих  служб.     
Перенаправитель портов пользовательского режима служб удаленных рабочих столо  в  Продолжить операцию? (Y-да/N-нет) [N]:

Теперь по крайней мере запускается :)
А с последним пунктом что-то можно сделать? Чтобы не вводить вручную Y

Iska 18-10-2011 17:48 1776251

Цитата:

Цитата goodguy
А с последним пунктом что-то можно сделать? Чтобы не вводить вручную Y »

Можно:
Код:

net.exe stop TermService /y
Но я бы попробовал писать на WSH: проще отследить зависимости, текущее состояние зависимых служб перед старт-стопом «головной» службы.

goodguy 18-10-2011 18:09 1776264

Iska, спасибо огромное :)
Все работает на ура!

Iska 18-10-2011 20:07 1776326

Добавлю и себе для памяти. Microsoft Windows XP - Net services overview:
Цитата:

All net commands accept /y (yes) and /n (no) command-line options. For example, the:
Код:

net stop server
command prompts you to confirm that you want to stop all dependent Server services, while:
Код:

net stop server /y
by automatically answering yes, bypasses the confirmation prompt and shuts down the Server service.

goodguy 18-10-2011 21:27 1776405

Выяснилась интересная деталь. Вариант у меня изначально был почти правильный, но тестировал я его на Вин 7 домашней расширенной 64 рядной.
И этот батник на ней не работает. Почему-то. Тогда как на профессиональной 32 битной без проблем.
Причем на той же домашней расширенной, из командной строки тоже все работает.
В общем, не важно, это просто к сведению. Нужно все равно для профессинальной :)

Iska 19-10-2011 08:18 1776590

Цитата:

Цитата goodguy
И этот батник на ней не работает. Почему-то.»

Методы отладки Вы уже знаете.

Crush45 13-01-2012 07:44 1834525

А как вместо AcceptStop=TRUE сделать AcceptStop=FALSE ? Чтобы служба не останавливалась, например Task Scheduler ? Service - Schedule


Время: 23:34.

Время: 23:34.
© OSzone.net 2001-