Как узнать имя службы Windows (service_name) через SC Query, если известна только отображаемая имя (display_name)
В работе с операционной системой Windows иногда возникает задача определить точное имя службы (service_name), если у вас есть только отображаемое имя службы (display_name). Это важно, например, при написании скриптов, автоматизации задач или мониторинге служб, поскольку многие команды и утилиты Windows требуют именно системное имя службы, а не отображаемое.
В данной статье рассмотрим, как с помощью команды sc query
можно получить системное имя службы, исходя из её отображаемого имени.
Что такое имя службы и отображаемое имя
В Windows у каждой службы два важных идентификатора:
- Имя службы (service_name) — уникальный идентификатор, который используется системой для управления службой. Например,
wuauserv
. - Отображаемое имя (display_name) — человекочитаемое название службы, которое видит пользователь, например, «Центр обновления Windows».
Часто многие пользователи знают именно отображаемое имя, а системное имя нужно для выполнения команд управления службами.
Зачем нужен SC Query
sc
— это встроенная в Windows утилита для управления службами. Команда sc query
позволяет получить подробную информацию о конкретной службе по её имени. Однако, если у нас есть только отображаемое имя, то прямого способа в sc
нет. Нужно искать службу по списку и сопоставлять отображаемое имя, чтобы узнать системное.
Способ получить имя службы через отображаемое имя
- Откройте командную строку Windows (cmd) с правами администратора.
- Выполните команду для получения списка всех служб:
cmd
sc query state= all
- Чтобы фильтровать службы по отображаемому имени, можно использовать PowerShell или сторонние скрипты. Но в чистом командном окне можно просмотреть службы следующим образом:
cmd
sc getdisplayname
Однако для выявления service_name, имея display_name, потребуется перебор.
Использование PowerShell для поиска имени службы по отображаемому имени
Гораздо проще и эффективнее воспользоваться PowerShell, где команда выглядит так:
powershell
Get-Service | Where-Object { $_.DisplayName -like "Имя_службы" }
Например, если вы знаете отображаемое имя службы частично или полностью:
powershell
Get-Service | Where-Object { $_.DisplayName -eq "Центр обновления Windows" } | Select-Object Name, DisplayName
Результат отобразит строку с полным системным именем службы, соответствующим отображаемому.
Итог
sc query
позволяет получить детальную информацию о службах по имени, но для поиска имени по отображаемому имени нужно перебрать список.- Лучшим вариантом является использование PowerShell, где можно фильтровать службы по отображаемому имени и легко получить системное имя.
- После получения service_name можно использовать команды
sc
для управления службой: запускать, останавливать или изменять параметры.
Таким образом, зная отображаемое имя службы, вы всегда сможете получить её системное имя для выполнения различных административных задач в Windows.
Если вам нужна помощь в автоматизации или написании скриптов для работы с Windows службами — обращайтесь, и мы поможем подобрать оптимальный вариант под ваши задачи.