Службы Windows представляют собой специальные приложения, работающие в фоновом режиме, не имеющие графического интерфейса и не взаимодействующие напрямую с пользовательским сеансом. Тем не менее, службы играют важную роль в работе операционной системы. Для просмотра запущенных и остановленных служб в Windows 10 используется встроенная оснастка с одноименным названием, запустить которую можно с помощью диалогового окошко «Выполнить», введя в него команду services.msc и нажав ввод.
Но иногда вместо просмотра служб в режиме реального времени может понадобиться сохранение их списка в текстовый файл для последующего изучения. К сожалению, встроенная оснастка управления службами не позволяет это сделать из графического интерфейса, но это ограничение легко обойти, воспользовавшись классической командной строкой или консолью PowerShell. Рассмотрим наиболее употребительные варианты сохранения служб в файл с помощью этих инструментов.
Командная строка
Для начала получим и сохраним только активные службы. Откройте классическую командную строку от имени администратора и выполните в ней следующую команду:
sc query type= service > "D:\services.log"
Это действие сохранит список работающих служб в текстовый файл в корень диска D. Имя и путь сохранение отчета могут быть произвольными. Если нужно получить список остановленных служб, добавляем в команду ключ inactive:
sc query type= service state= inactive > "D:\services.log"
В примере для сохранения отчета мы использовали формат LOG, но подойдет и более привычный TXT.
Однако и в том и в другом случае во избежание проблем с кодировкой просмотра отчета придется использовать программу Notepad++.
Так как Блокнот даже при изменении кодировки командой chcp 1251 отображает содержимое отчета некорректно.
PowerShell
Похожие результаты можно получить, используя консоль PowerShell, только синтаксис команды сохранения будет несколько иной.
Запустите консоль с повышенными привилегиями и выполните в ней команду следующего вида:
Get-Service | Where-Object {$_.Status -eq "Running"} | Out-File D:\services.log
Эта команда сохраняет в лог работающие службы, если нужно получить список остановленных служб, меняем ключ Running на Stopped (см. скриншот).
Использование PowerShell имеет небольшое преимущество перед использованием командной строки, поскольку не вызывает проблем с кодировкой.
Наконец, вы можете сохранить в файл отчета все службы, и запущенные, и остановленные.
Для вывода в CMD остановленных служб мы использовали ключ inactive, теперь просто меняем его на all.
В консоли PowerShell для получения полного списка служб убираем часть команды в фигурных скобках.
Команда выглядит так: Get-Service | Out-File D:\services.log.
Вот и все дела.
Ошибка в Windows 10
Windows PowerShell
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
Попробуйте новую кроссплатформенную оболочку PowerShell (https://aka.ms/pscore6)
PS C:\Users\Bubuka> sc query type= service > "D:\services.log"
Set-Content : Не удается найти позиционный параметр, принимающий аргумент "service".
строка:1 знак:1
+ sc query type= service > "D:\services.log"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand
PS C:\Users\Bubuka> sc query type= service state= inactive > "D:\services.log"
Set-Content : Не удается найти позиционный параметр, принимающий аргумент "service".
строка:1 знак:1
+ sc query type= service state= inactive > "D:\services.log"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand
Разобрался нужно было запустить под администратором.