Как управлять службами Windows через командную строку

Службы Windows

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

1. Управление службами Windows с помощью sc.exe

sc.exe - это встроенный инструмент командной строки для управления службами Windows. Он позволяет вам настраивать, запрашивать и контролировать службы непосредственно из терминала. С помощью sc.exe вы получаете полный контроль над службами Windows без необходимости использовать графический Диспетчер служб.

Проверка статуса службы с помощью sc

Мы можем использовать команду sc query serviceName, чтобы проверить статус конкретной службы. Например, мы запускаем команду sc query MySQL80, чтобы получить детали о службе MySQL80, включая ее состояние:

Проверка статуса службы с помощью sc

В настоящее время MySQL не работает на нашем компьютере.

Запуск службы с помощью sc

Чтобы запустить конкретную службу с использованием sc.exe, мы можем использовать команду sc start ServiceName. Например, мы запускаем sc start MySQL80, чтобы запустить службу MySQL80. Чтобы подтвердить, что служба успешно запущена, мы можем проверить ее статус с помощью команды sc query MySQL80:

Запуск службы Sc

Остановка службы с помощью sc

Вы можете остановить службу, чтобы освободить системные ресурсы. Например, команда sc stop MySQL80 останавливает MySQL, что можно проверить с помощью команды sc query MySQL80:

Остановка службы Sc

Создание новой службы с помощью sc

Мы можем создать новую службу с помощью команды sc create. Это требует указания имени службы, пути к исполняемому файлу и типа запуска. Например, чтобы создать новую службу с именем “mte”, которая будет автоматически запускаться при загрузке, введите:

sc create mte binPath="C:\Users\HP\Desktop\Examples\Service.exe" start= auto

Обновление службы с помощью sc

Мы можем использовать команду sc config, чтобы настроить существующую службу. Например, чтобы изменить тип запуска на ручной, выполните команду:

sc config serviceName start= demand

Удаление службы с помощью sc

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

sc delete serviceName

2. Управление службами Windows с помощью команды Net

Команда net в Windows позволяет нам управлять службами из командной строки. Она позволяет пользователям запускать, останавливать, приостанавливать, возобновлять и запрашивать службы без использования графического Диспетчера служб.

Запуск и остановка службы с помощью команды net

Мы можем запускать или останавливать службы Windows с помощью команд net start serviceName и net stop serviceName соответственно:

Запуск или остановка службы с помощью команды net

Приостановка и возобновление служб с помощью команды net

Некоторые службы Windows поддерживают приостановку и возобновление вместо полной остановки. В этом случае мы можем использовать команды net pause ServiceName и net continue ServiceName соответственно:

Приостановка и возобновление службы команда net

Проверка статуса службы с помощью команды net

Команда net сама по себе не предоставляет прямого способа проверки статуса конкретной службы, но мы можем использовать ее вместе с командой findstr, чтобы отфильтровать результаты. Например, чтобы проверить, работает ли указанная служба, введите:

net start | findstr "ServiceName"

Если указанная служба работает, команда вернет ее имя; в противном случае не будет никакого вывода.

Управление службами удаленно с помощью команды net

Мы можем использовать команду net для управления службами на удаленных компьютерах, указывая имя компьютера. Например, команды net start ServiceName /S RemotePC и net stop ServiceName /S RemotePC используются для запуска или остановки служб на удаленном компьютере.

3. Управление службами Windows с помощью Cmdlets PowerShell

PowerShell предлагает более продвинутый контроль над службами Windows с помощью встроенных cmdlets, таких как Get-Service, Start-Service, Stop-Service и Restart-Service. Эти cmdlets позволяют пользователям проверять статус службы, запускать или останавливать ее и даже перезапускать ее при необходимости.

Cmdlets PowerShell предоставляют детализированный вывод, включая статус службы, отображаемое имя и зависимые службы. Эти cmdlets позволяют писать скрипты и автоматизировать действия, что делает их полезными для эффективного управления несколькими службами.

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

Получение статуса службы с помощью cmdlets

Мы можем использовать cmdlet Get-Service -Name ServiceName, чтобы получить подробности о указанной службе. Например, следующая команда возвращает статус службы MySQL80, показывая, работает ли она или остановлена:

Get-Service -Name MySQL80

Проверка статуса службы Получить службу

Запрос служб с помощью cmdlets PowerShell

Мы можем использовать команду Get-Service, чтобы запрашивать службы на основе определенных критериев. Например, мы можем извлечь все текущие работающие службы с помощью команды:

Get-Service | Where-Object { $_.Status -eq 'Running' }

Запрос конкретных служб

Запуск и остановка служб с помощью cmdlets PowerShell

Мы можем запускать или останавливать конкретную службу с помощью cmdlets Start-Service и Stop-Service соответственно. Например, мы используем команды PowerShell для запуска, остановки и проверки статуса службы MySQL80:

Start-Service -Name MySQL80   
Stop-Service -Name MySQL80  
Get-Service -Name MySQL80

Запуск Остановка службы PowerShell

Изменение типа запуска службы с помощью cmdlets PowerShell

Cmdlets PowerShell позволяют нам обновлять тип запуска службы. Например, мы можем запускать следующие cmdlets, чтобы настроить службу для автоматического запуска с системой, требовать ручного запуска или быть отключенной, соответственно:

Set-Service -Name ServiceName -StartupType Automatic  
Set-Service -Name ServiceName -StartupType Manual  
Set-Service -Name ServiceName -StartupType Disabled

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

Управление удаленными службами с помощью cmdlets

PowerShell также позволяет управлять службами на удаленных компьютерах, указывая имена удаленных компьютеров. Например, команда Get-Service -Name ServiceName -ComputerName RemotePC получает статус конкретной службы, работающей на удаленном компьютере с именем RemotePC, что позволяет администраторам удаленно контролировать службы.

Аналогично команда Restart-Service -Name ServiceName -ComputerName serviceName пытается перезапустить указанную службу на удаленном компьютере. Это гарантирует, что служба перезапустится без необходимости прямого доступа к машине. Однако удаленное управление службами требует соответствующих разрешений и включения удаленного управления PowerShell.

4. Автоматизация задач управления службами

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

Например, следующий скрипт проверяет, работает ли служба MySQL80, и перезапускает ее, если она остановлена:

$serviceName = "MySQL80"  
$service = Get-Service -Name $serviceName  
if($service.Status -ne "Running"){  
    Restart-Service -Name $serviceName -Force  
    Write-Output "$serviceName была остановлена и перезапущена."  
}else{  
    Write-Output "$serviceName уже работает."  
}

По умолчанию Windows ограничивает выполнение скриптов. Чтобы включить выполнение, сначала выполните команду:

Set-ExecutionPolicy RemoteSigned

Теперь перейдите к расположению скрипта и выполните команду .\serviceScript.ps1, чтобы запустить скрипт:

Управление службами Windows из командной строки дает вам полный контроль без необходимости полагаться на графический Диспетчер служб. Независимо от того, используете ли вы sc.exe, net или cmdlets PowerShell, каждый метод предлагает эффективные способы запуска, остановки и настройки служб.

Возможности скриптов PowerShell делают автоматизацию легкой, позволяя вам бесшовно контролировать и управлять службами. Освоив эти инструменты, вы сможете устранять проблемы, оптимизировать работу системы и обеспечивать бесперебойную работу критически важных служб.

Для получения дополнительных способов оптимизации вашей системы Windows и устранения распространенных проблем, ознакомьтесь с этими руководствами по исправлению проблем Windows и оптимизации вашего ПК для повышения производительности.