Блог основных технологий

Я хочу перезапускать какую-то конкретную службу в определенное время каждую неделю. Могу ли я использовать команду NET?

Да. С помощью планировщика заданий Windows вы можете использовать команду NET для перезапуска определенной службы в определенное время.

Для этого:

Найдите название вашего сервиса

Каждая служба Windows имеет два имени — короткое имя службы и понятное отображаемое имя. Нам нужно имя службы для команды NET.

Если вы еще не знаете имя службы или хотите проверить его:

Здесь мы видим, что имя службы диспетчера очереди печати на самом деле «Диспетчер очереди печати»:

Блог основных технологий

Создайте пакетный файл для перезапуска службы

Имея на руках имя службы, теперь мы можем использовать команду NET для перезапуска службы.

NET STOP «Имя вашей службы» NET START «Имя вашей службы»

Замените имя службы на имя службы, указанное на шаге 1. Кавычки обязательны, если имя службы содержит пробел.

Например, если ваша служба называется «Spooler», пакетный файл должен выглядеть так:

NET STOP “Spooler” NET START “Spooler”

Сохраните пакетный файл в известном месте. Мы будем использовать его на следующем шаге.

Протестировать пакетный файл

Теперь, когда вы можете перезапустить службу с помощью пакетного файла, давайте запланируем ее запуск в любое время.

Например, вот как мы будем перезапускать службу диспетчера очереди печати каждое воскресенье в час ночи:

В будущем новая задача оживет в запланированное время, чтобы быстро перезапустить службу. Тебе должно быть хорошо идти.

Используйте ServicePilot вместо NET для большей надежности

Пока НЕТ. EXE подойдет для большинства ситуаций, но есть несколько сценариев, в которых он может не сработать.

Услужит ли вам:

В этом случае команда NET STOP может не выполниться. И когда это произойдет, последующий вызов NET START также завершится ошибкой (поскольку служба не будет бездействовать). Конечным результатом является то, что ваш сервис останется в непригодном для использования/не отвечающем состоянии!

Наша бесплатная утилита ServicePilot была создана для обхода недостатков NET. При необходимости он будет ждать более 30 секунд и сделает все возможное, чтобы принудительно завершить не отвечающую службу.

Чтобы использовать ServicePilot вместо NET:

Удачи вам на службе!

Используйте нашу бесплатную утилиту Service Scheduler вместо Task Scheduler

Нам надоело вручную создавать пакетные файлы и запланированные задачи для управления нашими службами, поэтому мы создали бесплатное приложение для всего этого. 🙂

С помощью Service Scheduler вы можете легко запускать, останавливать или перезапускать любую службу Windows — ежедневно, еженедельно или ежемесячно в любое время по вашему выбору:

Блог основных технологий

Service Scheduler абсолютно бесплатен и очень прост в использовании. Вы можете запланировать обслуживание за считанные секунды:

Блог основных технологий

Загрузите Service Scheduler и проверьте его уже сегодня!

Создаём bat-ник, вписываем следующий скрипт туда обязательно в кодировке ANSI

и запускаем от имени администратора.

где «Подключение по проверке сети» — это название сетевого адаптера в вашей Windows. Оно может вызываться «Подключение по оценке сети 2» или «Подключение по оценке сети 3». Я для удобства переименовал подключение к локальной сети, Wi-Fi, Интернету, маршрутизатору или Bluetooth.

Замечания: работает не только в Windows 7, но также и в Windows 8 и Windows 10.

P. S. один раз скрипт не заработал, рано утром пришлось ехать на объект, так что случилось на свой страх и риск

Отблагодарить автора статьи также можно переводом, +100 вам в карму!

скрипт окон летучих мышей

Навигация по записям

Есть ли способ перезапустить службу Windows из командной строки?

спросил 24 июн 2011 в 17:54

Также есть команда, созданная специально для работы с сервисами: sc

ответил 24 июня 2011 в 17:58

7 золотых знаков37 серебряных знаков44 бронзовых знака

Пожалуйста, обратите внимание, что если есть другие службы, которые зависят от этой службы – обычная остановка сети и запуск сети не перезапустит их. net stop /y остановит все зависимости

Наиболее распространенный пример — SQL Server и агент SQL.

Я рекомендую командлет PowerShell для решения этой проблемы:

powershell -command “Restart-Service MSSQLSERVER -Force”

После запуска MSSQLSERVER – запускает все ранее остановленные зависимости.

ответил 15 марта 2017 в 13:57

Чтобы перезапустить службу Windows из командной строки или запланированных задач, используйте это:

cmd /c “net stop “Имя службы” и sc start “Имя службы””

ответил 12 фев 2013 в 7:27

1 серебряный знак2 бронзовых знака

Вы также можете использовать PowerShell:

:/>  Создание загрузочной флешки Windows 7-10 с набором утилит, драйверов и программ

15 золотых знаков57 серебряных знаков68 бронзовых знаков

ответил 24 июня 2011 в 18:12

1 золотой знак2 серебряных значка7 бронзовых знаков

Чтобы устранить надоедливую ошибку, связанную с тем, что драйвер Wacom Intuous Driver не работает, я получаю ее при каждой перезагрузке.

Клавиша Windows + R, вставить, Бам!

sc остановить WTabletServicePro && sc запустить WTabletServicePro

5 золотых знаков29 серебряных знаков30 бронзовых знаков

ответил 20 октября 2014 в 3:45

1 серебряный знак1 бронзовый знак

Утилита PsService из PsTools предоставляет команду перезапуска для служб с дополнительными параметрами для запуска на другом компьютере.

ответил 22 мая 2018 в 16:00

1 золотой знак19 серебряных знаков27 бронзовых знаков

У меня есть пакетный скрипт, который выглядит так:

пц останови мой сервис
sc запустить myservice

возникает ошибка, потому что sc не ждет остановки службы. Как перезапустить службу с помощью скрипта?

20 золотых знаков98 серебряных знаков148 бронзовых знаков

спросил 12 июн 2009 в 22:48

Автор сообщения хочет убедиться, что служба остановлена, прежде чем пытаться перезапустить ее. Вы можете использовать цикл на выходе “sc query”, делая что-то вроде этого:

ответил 12 июня 2009 в 22:54

1 золотой знак38 серебряных знаков53 бронзовых знака

Может чего-то не хватает, но я постоянно использую это:

чистая остановка “myservice”
чистый старт “myservice”

net stop “myservice” && net start “myservice”

ответил 13 июня 2009 в 0:23

4 серебряных знака9 бронзовых знаков

Очень просто с PowerShell:

Еще лучше, используя отображаемые имена:

ответил 13 июня 2009 в 8:50

1 золотой знак10 серебряных знаков15 бронзовых знаков

Если это исключительно для перезапуска службы, вы можете использовать

Чистая остановка моего сервиса
Чистый запуск myservice

Однако, если вы хотите получить доступ к опциям sc, вы можете использовать команду start /wait

start /B /WAIT CMD /C “sc stop myservice”
start /B /WAIT CMD /C “sc start myservice”

этот метод является более общим решением, которое можно применить к любой команде.

ответил 13 июня 2009 в 9:29

9 серебряных знаков11 бронзовых знаков

Для тихого перезапуска какой-либо службы, которая запрашивает подтверждения для остановки (например, службы сервера), вы можете добавить /y в конец команды остановки.

сервер net stop /y
сервер net start

Было бы полезно для автоматического выполнения скрипта.

ответил 20 мая 2011 в 14:55

1 золотой знак9 серебряных знаков18 бронзовых знаков

Если вы хотите перезапустить неисправную службу, вам не нужно запускать сценарий. В оснастке MMC «Службы» щелкните правой кнопкой мыши службу, выберите «Свойства», перейдите на вкладку «Восстановление». Здесь вы можете указать, какие действия вы хотите предпринять, если служба остановится. Доступна большая гибкость. Вам понадобится сценарий, если вы пытаетесь остановить службу, сделайте что-нибудь, затем запустите сценарий, предварите командный файл словом net stop «myserviceshortname» и завершите его net start «myserviceshortname»

В vbscipt немного больше кода для остановки службы и ее зависимостей:

Вот запуск сервиса и все, от чего это зависит (должно быть знакомо)

ответил 13 июня 2009 в 3:22

4 золотых знака36 серебряных знаков59 бронзовых знаков

4 золотых знака4 серебряных знака15 бронзовых знаков

ответил 26 фев 2016 в 6:59

Сделал гибрид: в файле *.cmd:

ответил 15 октября 2020 г. в 5:54

Приведенные ниже команды представляют собой синтаксис PowerShell, используемый для запуска, остановки и перезапуска службы WSUS. Вот еще несколько руководств, которые вы, возможно, захотите увидеть: Как применить обновления Windows из WSUS к серверу с помощью AWS RunCommand, Как настроить SSL между серверами WSUS (вышестоящие и нижестоящие серверы), Удобные команды WSUS — команды служб обновления Windows Server, WAACLT, PowerShell и USOClient, службы обновления Windows Server: серверы Windows 2016 не отображаются в консоли WSUS, клиенты WSUS появляются и исчезают из консоли служб обновления WSUS.

Restart the WSUS service

Stop the WSUS service

To view the status of the WSUS service

The below commands are Command line syntax used to start, stop and restart WSUS service.

net stop wsusservice

To start the WSUS Service

net start wsusservice

I hope you found this blog post helpful. If you have any questions, please let me know in the comment session.

В Windows вы можете управлять службами не только из графической консоли services.msc или утилиты командной строки Sc.exe (первоначальна включалась в пакет ресурсов Resource Kit), но и с помощью PowerShell. В этой статье мы смотрим различные сценарии управления службами Windows с помощью PowerShell.

:/>  Как найти файлы DxDiag и MSInfo для отправки информации в саппорт

Основные командлеты PowerShell для управления службами Windows

Существует восемь основных командлетов Service, предназначенных для просмотра состояния и управления службами Windows.

Чтобы получить весь список командлетов Service, введите команду:


Блог основных технологий

Получить подробное описание и примеры использования конкретного командлета можно через Get-help:


Блог основных технологий

Get-Service: получаем список служб и их состояние

Получить список и состояние (Running/Stopped) службы на локальном или удаленном компьютере можно с помощью командлета Get-Service. Параметр -Name позволяет делать отбор по имени службы. Имя службы можно задать с использованием подстановочного символа *.


Блог основных технологий

Если вы не знаете точное имя службы, есть возможность найти службы по отображаемому имени с помощью параметра –DisplayName. Можно использовать список значений и подстановочные знаки.

Командлет Get-Service можно использовать для получения состояния служб на удаленных компьютерах, указав параметр -ComputerName. Можно опросить статус службы сразу на множестве удаленных компьютеров, их имена нужно перечислить через запятую. Например, приведенная ниже команда получает состояние службы Spooler на удаленных компьютерах RM1 и RM2.

Get-Service spooler –ComputerName RM1,RM2

Status Name DisplayName
—— —- ———–
Running spooler Print Spooler
Stopped spooler Print Spooler

Вывести все свойства службы позволит командлет Select-Object:


Блог основных технологий

Командлет Select-Object позволит вывести определенные свойства службы. Например, нам нужно вывести имя, статус и доступные возможности службы Spooler:


Блог основных технологий

Командлет Get-Service имеет два параметра, которые позволяют получить зависимости служб:

Приведенная ниже команда выводит службы, необходимые для запуска службе Spooler:

Get-Service –Name Spooler -RequiredServices

Следующая команда выводит службы, которые зависят от службы Spooler:

Get-Service –Name Spooler -DependentServices

При необходимости найти службы с определенным состоянием или параметрами, используйте командлет Where-Object. Например, получим список запущенных служб со статусом Running:


Блог основных технологий

Для вывода служб с типом запуска Manual, выполните команду


Блог основных технологий

Проверить, что в системе имеется указанная служба:

if (Get-Service “ServiceTest” -ErrorAction SilentlyContinue)

Остановка, запуск, приостановка и перезапуск служб из PowerShell

Остановить службу можно с помощью командлета Stop-Service. Чтобы остановить службу печати, выполните команду:

Stop-Service -Name spooler

Командлет Stop-Service не выводит никаких данных после выполнения. Чтобы увидеть результат выполнения команды, используйте параметр -PassThru.

Обратите внимание, что не каждую службу можно остановить. Если есть зависимые службы, то получите ошибку

Cannot stop service because it has dependent services. It can only be stopped if force flag set.


Блог основных технологий

Для принудительной остановки используйте параметр –Force. Вы должны помнить, что остановятся также все зависимые службы:

Stop-Service samss –Force -Passthru

Следующая команда остановит перечисленные службы (bits,spooler) со статусом ”Running”:


Блог основных технологий

Командлет Start-Service запускает остановленные службы:

Start-Service -Name spooler -PassThru

Служба не запустится, если есть остановленные зависимые службы. Чтобы их найти и включить:


Блог основных технологий

Командлет Suspend-Service может приостанавливать службы, допускающие временную приостановку и возобновление. Для получения сведений о возможности временной приостановки конкретной службы используйте командлет Get-Service со свойством «CanPauseAndContinue«.


Блог основных технологий

Чтобы отобразить список всех служб, работа которых может быть приостановлена, введите команду:


Блог основных технологий

Приостановим службу SQLBrowser:

Suspend-Service -Name SQLBrowser

Для возобновления работы приостановленной службы служит командлет Resume-service:

Resume-Service -Name SQLBrowser

Следующая команда возобновляет работу всех приостановленных служб:

Командлет Restart-Service перезапускает службу:

Restart-Service -Name spooler

Эта команда запускает все остановленные сетевые службы компьютера:

Параметр —ComputerName у этих командлетов отсутствует, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command или через пайп:

Set-Service – изменение настроек службы Windows

Командлет Set-Service позволяет изменить параметры или настройки служб на локальном или удаленном компьютере. Так как состояние службы является свойством, этот командлет можно использовать для запуска, остановки и приостановки службы. Командлет Set-Service имеет параметр -StartupType, позволяющий изменять тип запуска службы.

Изменим тип запуска службы spooler на автоматический:

Set-Service spooler –startuptype automatic –passthru


Блог основных технологий

Можно перевести службу на ручной (manual) запуск:

Set-Service spooler –startuptype manual –passthru


Блог основных технологий

Создание и удаление служб Windows c помощью PowerShell

New-Service – командлет для создания новой службы в Windows. Для новой службы требуется указать имя и исполняемый файл (вы можете запустить PowerShell скрипт как службу Windows).

В примере создадим новую службу с именем TestService.

new-service -name TestService -binaryPathName “C:WINDOWSSystem32svchost.exe -k netsvcs”


Блог основных технологий

С помощью параметра Get-WmiObject получим информацию о режиме запуска и описание службы

get-wmiobject win32_service -filter “name=’testservice'”


Блог основных технологий

Изменить параметры новой службы можно командой

Set-Service -Name TestService -Description ‘My Service’ -StartupType Manual


Блог основных технологий

Чтобы удалить службу используйте команду

:/>  Скачать Restore Point Creator Rus для Windows 10 (бесплатно)

(Get-WmiObject win32_service -Filter ″name=′TestService′″).delete()

Изменение учетной записи для запуска службы

Вы можете изменить учетную запись, из-под которой запускается служба. Получим имя учетной записи, которая используется для запуска службы TestService


Блог основных технологий

Для изменения имени и пароля учетной записи выполняем команды.

$svc = get-wmiobject win32_service -filter “name=’TestService'”$svc. GetMethodParameters(“change”)

В результате получаем список параметров метода Change(). Считаем на каком месте находятся параметры StartName и StartPassword – 20 и 21 место соответственно.


Блог основных технологий

Либо вы можете указать имя gMSA аккаунта. Пароль при этом не указывается.


Блог основных технологий

Как видите, PowerShell позволяет легко управлять службами Windows. Можно создавать, останавливать, запускать и возобновлять службы, менять их свойства. Большинство командлетов позволяют управлять службами на удаленных компьютерах.

Как завершить процесс службы Windows, которая зависла в статусе stopping (остановка) или starting (запуск)? Большинство администраторов Windows встречалось с ситуациями, когда при попытке остановить (перезапустить) службу из графического интерфейса консоли управления службами (
Services.msc
), служба зависает намертво и висит в статусе Stopping (или Starting). При этом все кнопки управления службой в консоли (Start, Stop, Restart) становятся недоступными (серыми). Самый простой способ – перезагрузить сервер, но это не всегда допустимо. Рассмотрим альтернативные способы, позволяющие принудительно завершить зависшую службу или процесс без необходимости перезагрузки Windows.


Блог основных технологий

Если в течении 30 секунд после попытки остановки службы, она не останавливается, Windows выводит сообщение:

Не удалось остановить службу xxxxxxx Windows на локальном компьютере.
Ошибка 1053. Служба не ответила на запрос своевременно.

Windows Could not stop the xxxxxx service on Local Computer
Error 1053: The service did not respond in a timely fashion.

The service is starting or stopping. Please try again later.

Windows could not stop the Service on Local Computer.
Error 1061: The service cannot accept control messages at this time.

Как остановить зависшую службу Windows из командной строки?

Важно. Будьте внимательными. Принудительная отставка процесса критичной службы Windows может привести к BSOD или перезагрузке операционной системы.

В данном случае PID процесса —
9186
.

Чтобы принудительно завершить зависший процесс с PID 9186 воспользуйтесь утилитой taskkill:

taskkill /PID 9168 /F


Блог основных технологий

SUCCESS: The process with PID 9168 has been terminated.

Данная команда принудительно завершит процесс службы. Теперь вы можете запустите службу командой sc start servicename или через консоль управления службами (или совсем удалить эту службу, если она не нужна).

«Выстрел в голову» зависшей службы можно выполнить и более элегантно, не выполняя ручное определение PID процесса. У утилиты taskkill есть параметр /FI, позволяющий использовать фильтр для выбора необходимых служб или процессов. Вы можете остановить конкретную службу командой:

Или можно вообще не указывать имя, службы, завершив все сервисы в зависшем состоянии с помощью команды:

taskkill /F /FI “status eq not responding”

После этого служба, зависшая в статусе Stopping должна остановиться.

Также вы можете использовать утилиту taskkill для принудительной остановки зависших служб на удаленном компьютере:

Принудительное завершение зависшей службы в PowerShell

Также вы можете использовать PowerShell для принудительной остановки службы. С помощью следующей команды можно получить список служб, находящихся в состоянии Stopping:


Блог основных технологий

Завершить процесс для всех найденных служб поможет командлет Stop-Process. Следующий PowerShell скрипт завершит все процессы зависших служб в Windows:


Блог основных технологий

В новом PowerShell Core 6.x/7.x вместо командлета Get-WmiObject нужно использовать Get-CimInstance. Замените первую команду скрипта на:

Анализ цепочки ожидания зависшего приложения с помощью ResMon

Вы можете определить процесс, из-за которого зависла служба с помощью монитора ресурсов (
resmon.exe
).

Завершение зависшего процесса из-под SYSTEM

Таймаут, в течении которого Service Control Manager ждет ожидания запуска или остановки службы можно изменить через параметр реестра ServicesPipeTimeout. Если служба не запускается в течении указанного таймаута, Windows записывает ошибку в Event Log (Event ID: 7000, 7009, 7011, A timeout was reached 30000 milliseconds). Вы можете увеличить этот таймаут, например до 60 секунд:

reg add HKLMSYSTEMCurrentControlSetControl /v ServicesPipeTimeout /t REG_SZ /d 600000 /f

Это бывает полезным при запуске/остановки тяжелых служб, которые не успевают завершить все процессы быстро (например, MS SQL Server).


Блог основных технологий