Показать полную графическую версию : [решено] Перезапуск служб с помощью батника
Всем привет,
Возникла такая проблема, нужно организовать ускоренный перезапуск нескольких служб.
Такой вариант работает из коммандной строки:
net stop [служба] && net start [служба], но из батника не хочет.
Окно просто появляется и тут же исчезает.
Как это можно записать в батник, чтобы всё работало?
Окно просто появляется и тут же исчезает. »
Проверяйте, запуская пакетный файл из окна командной строки или из-под Far Manager'а.
Название службы, версия ОС?
Название службы, версия ОС?
ОС В основном Windows 7 Professional, но есть и XP Professional SP3. Это нужно для нескольких компов, так как в качестве сервера печати у нас используется screwdrivers, а эта программа малость глючит, и время от времени полностью отрубает в RDP возможность вызова диалога печати. Лечится только перезагрузкой компа, либо перезапуском служб удаленных рабочих столов и печати.
goodguy, речь идёт именно о «TermService» и «Spooler»?
Да. Именно о них :)
Но вместе с TermService должна перезапускаться еще и служба перенаправления портов
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»? Каким образом у Вас получалось:
либо перезапуском служб удаленных рабочих столов »
Меняли свойства самой службы?
А как у Вас обстоит дело с возможностью останова службы «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 меняет что-то, но утверждать не могу
Тогда пробуйте запустить из командной строки пакетный файл, который Вы и предлагали:
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» — потребно их будет так же стартовать.
Отлично работает. Да я уже и до этого пробовал. Из коммандной строки пашет.
Microsoft Windows [Version 6.1.7600] (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\Konstantin>net.exe stop Spooler && net.exe start Spooler
Служба "Диспетчер печати" останавливается.
Служба "Диспетчер печати" успешно остановлена.
Служба "Диспетчер печати" запускается. Служба "Диспетчер печати" успешно запущена.
C:\Users\Konstantin>
goodguy, я обновил свой предыдущий пост.
Отлично работает. Да я уже и до этого пробовал. Из коммандной строки пашет. »
Ещё раз: создать именно пакетный файл указанного вида (http://forum.oszone.net/post-1776197.html#post1776197). Запустить его из командной строки. Что получается?
Аа, не сразу понял, что нужно =)
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
А с последним пунктом что-то можно сделать? Чтобы не вводить вручную Y »
Можно:
net.exe stop TermService /y
Но я бы попробовал писать на WSH: проще отследить зависимости, текущее состояние зависимых служб перед старт-стопом «головной» службы.
Iska, спасибо огромное :)
Все работает на ура!
Добавлю и себе для памяти. Microsoft Windows XP - Net services overview (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/net_command_options.mspx?mfr=true):
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.
Выяснилась интересная деталь. Вариант у меня изначально был почти правильный, но тестировал я его на Вин 7 домашней расширенной 64 рядной.
И этот батник на ней не работает. Почему-то. Тогда как на профессиональной 32 битной без проблем.
Причем на той же домашней расширенной, из командной строки тоже все работает.
В общем, не важно, это просто к сведению. Нужно все равно для профессинальной :)
И этот батник на ней не работает. Почему-то.»
Методы отладки Вы уже знаете.
А как вместо AcceptStop=TRUE сделать AcceptStop=FALSE ? Чтобы служба не останавливалась, например Task Scheduler ? Service - Schedule
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.