- Команда SC – управление службами.
- Примеры использования SC.
- Как открыть службы Windows
- Способ 1
- Способ 2
- Способ 3
- Управление службами Windows с помощью PowerShell
- Основные командлеты PowerShell для управления службами Windows
- Остановка, запуск, приостановка и перезапуск служб из PowerShell
- Set-Service – изменение настроек службы Windows
- Создание и удаление служб Windows c помощью PowerShell
- Изменение учетной записи для запуска службы
Команда SC – управление службами.
Команда SC используется для конфигурирования, опроса состояния, остановки, запуска, удаления и добавления системных служб в командной строке Windows. Большая часть подкоманд команды SC применима так же по отношению к драйверам. При наличии соответствующих прав, команда SC может применяться для управления службами как на локальной, так и на удаленной системе.
Формат командной строки:
sc сервер [команда] [имя службы] параметр1 параметр2 .
При запуске SC.EXE без параметров, отображается подсказка по использованию команды.
сервер — имя или IP-адрес удаленной системы в формате «\\cервер».
query -Запрос состояния службы или перечисление состояний типов служб.
queryex — Запрос расширенного состояния службы или перечисление состояний типов служб.
start — Запуск службы.
pause — Отправка службе управляющего запроса PAUSE для приостановки ее работы.
interrogate — Отправка службе управляющего запроса INTERROGATE.
continue — Отправка службе управляющего запроса CONTINUE для возобновления ее работы.
stop — Отправка службе запроса STOP.
config — Изменение конфигурации службы (постоянное).
description — Изменение описания службы.
failure — Изменение действия, выполняемого службой при сбое.
failureflag — Изменение флага действия, выполняемого службой при сбое.
sidtype — Изменение типа SID службы.
privs — Изменение привилегий, требуемых для службы.
qc — Запрос данных конфигурации для службы.
qdescription — Запрос описания службы.
qfailure — Запрос действия, выполняемого службой при сбое.
qfailureflag — Запрос флага действия, выполняемого службой при сбое.
qsidtype — Запрос типа SID службы.
qprivs — Запрос привилегий, требуемых для службы.
qtriggerinfo — Запрос параметров службы.
qpreferrednode — Запрос предпочтительного узла NUMA службы.
delete — Удаление службы (из реестра).
create — Создание службы (добавление ее в реестр).
control — Отправка службе управляющего сигнала.
sdshow — Отображение дескриптора безопасности службы.
sdset — Установка дескриптора безопасности службы.
showsid — Отображение строки SID службы, соответствующей произвольному имени.
triggerinfo — Настройка параметров триггеров службы.
preferrednode — Задание предпочтительного узла NUMA службы.
GetDisplayName — Получение параметра DisplayName для службы.
GetKeyName — Получение имени раздела для службы (ServiceKeyName).
EnumDepend — Перечисление зависимостей службы.
Следующие команды не требуют имени службы:
sc сервер команда параметры boot -(ok | bad) Показывает, требуется ли сохранить последнюю загрузку в качестве последней удачной конфигурации загрузки
Lock -Блокировка базы данных служб
QueryLock -Запрос состояния блокировки (LockStatus) базы данных диспетчера управления службами (SCManager)
Справка для команд QUERY и QUERYEX:
Параметры QUERY и QUERYEX:
Если после команды query указано имя службы, будет возвращено cостояние этой службы. В этом случае дополнительные параметры не используются. Если после команды запроса указаны следующие параметры либо ничего не указано, выполняется перечисление служб.
type= — Тип служб для перечисления (driver, service, all) (по умолчанию = service)
state= — Состояние служб для перечисления (inactive, all) (по умолчанию = active)
bufsize= — Размер (в байтах) буфера перечисления (по умолчанию = 4096)
ri= — Номер индекса возобновления для начала перечисления (по умолчанию = 0)
group= — Группа служб для перечисления (по умолчанию = все группы)
Примеры использования SC.
sc query — Перечислить состояния активных служб и драйверов
sc query dnscache — Отобразить состояние службы DNS-клиент, имеющей короткое имя dnscache
Пример отображаемой информации:
Тип Состояние Код_выхода_Win32 | : 20 WIN32_SHARE_PROCESS : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) : 0 (0x0) : 0 (0x0) : 0x0 : 0x0 |
sc \\mycomp queryex dnscache — отображение расширенного состояния службы DNS-клиент на компьютере с именем mycomp
Пример отображаемой информации:
Имя_службы: dnscache Тип Состояние Код_выхода_Win32 | : 20 WIN32_SHARE_PROCESS : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) : 0 (0x0) : 0 (0x0) : 0x0 : 0x0 : 1312 : |
sc stop dnscache — остановить службу DNS-клиент на локальном компьютере
sc start dnscache — запустить службу DNS-клиент на локальном компьютере
sc query type= driver — отобразить информацию всех активных драйверов
sc query type= service — отобразить информацию всех активных служб Windows
sc query state= all — отобразить информацию всех активных драйверов и служб Windows
Обратите внимание на наличие пробела после знака равенства (state= all …) в параметрах перечисленных команд.
sc query type= driver group= NDIS — отобразить информацию обо всех драйверах группы NDIS ( сетевых драйверах )
Пример отображаемой информации:
Имя_службы: BfLwf
Выводимое_имя: Qualcomm Atheros Bandwidth Control
Тип Состояние   Код_выхода_Win32 Код_выхода_службы Контрольная_точка Ожидание | : 1 KERNEL_DRIVER : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) : 0 (0x0) : 0 (0x0) : 0x0 : 0x0 |
.
.
.
Имя_службы: wna3100m
Выводимое_имя: NETGEAR WNA3100M N300 Wireless Mini USB Adapter
Тип Состояние   Код_выхода_Win32 Код_выхода_службы Контрольная_точка Ожидание | : 1 KERNEL_DRIVER : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) : 0 (0x0) : 0 (0x0) : 0x0 : 0x0 |
sc query wna3100m — отобразить информацию о драйвере NETGEAR WNA3100M N300 Wireless Mini USB Adapter.
sc query type= interact — отобразить информацию обо всех интерактивных службах.
sc query state= inactive — отобразить информацию обо всех остановленных службах
sc query state= inactive > C:\Stopedsvc.txt — записать информацию обо всех остановленных службах в текстовый файл C:\Stopedsvc.txt . Перенаправление вывода в текстовый файл удобно использовать для сохранения информации и ее последующего использования.
sc qc dnscache — отобразить данные конфигурации для службы DNS-клиент.
Пример выводимой информации:
[SC] QueryServiceConfig: успех
Имя_службы: dnscache
Тип Тип_запуска Управление_ошибками Имя_двоичного_файла Группа_запуска Тег Выводимое_имя Зависимости &bnsp Начальное_имя_службы | : 20 WIN32_SHARE_PROCESS : 2 AUTO_START : 1 NORMAL : C:\Windows\system32\svchost.exe -k NetworkService : TDI : 0 : DNS-клиент : Tdx : nsi : NT AUTHORITY\NetworkService |
sc showsid dnscache — отобразить уникальный идентификатор SID службы DNS-клиент
Для конфигурирования системных служб используется команда sc config … , выполняющая изменение записи службы в реестре и в базе данных служб.
sc сервер config [имя службы] параметр1 параметр2.
Параметры командной строки:
Имя параметра включает знак равенства (=). Между знаком равенства и значением параметра должен быть пробел.
type= own|share|interact|kernel|filesys|rec|adapt — тип службы
start= boot|system|auto|demand|disabled|delayed-auto — тип запуска службы
error= normal|severe|critical|ignore — режим обработки ошибок
binPath= путь_к_двоичному_файлу — путь и имя исполняемого файла
group= группа_запуска — группа, к которой относится драйвер.
tag= yes|no наличие признака для определения порядка запуска внутри группы
depend= зависимости (разделенные / (косой чертой)) — зависимости службы
obj= имя_учетной_записи|имя_объекта
DisplayName= выводимое имя
password= пароль
Информация о драйверах и системных службах (сервисах) находится в разделе
HKLM\SYSTEM\CurrentControlSet\Services
Каждому драйверу или сервису соответствует свой раздел. Например, «msahci» — для драйвера стандартного SATA контроллера жестких дисков, «DNScache» — для службы «DNS клиент».
Как открыть службы Windows
Способ 1
Кликните правой кнопкой мыши по Пуск и выберите Выполнить:
В открывшемся окне введите команду services.msc и нажмите OK.
Откроется оснастка «Службы».
Способ 2
Откройте панель управления: в Windows 10 или 8 правой кнопкой мыши по Пуск — Панель управления. В Windows 7: левой кнопкой по Пуск — Панель управления.
В открывшемся окне в правой верхней части найдите строку поиска и введите Службы.
Среди результатов в разделе Администрирование кликните по Просмотр локальных служб.
Способ 3
Воспользуйтесь поиском Windows.
В 10-ке кликните по значку поиска на нижней панели и введите Службы.
Среди результатов в самом верху появится нужный пункт.
В Windows 7 процесс аналогичен, за исключением того, что строка поиска находится в нижней части меню Пуск.
Управление службами Windows с помощью PowerShell
В Windows вы можете управлять службами не только из графической консоли services.msc или утилиты командной строки Sc.exe (первоначальна включалась в пакет ресурсов Resource Kit), но и с помощью PowerShell. В этой статье мы смотрим различные сценарии управления службами Windows с помощью PowerShell.
Основные командлеты PowerShell для управления службами Windows
Существует восемь основных командлетов Service, предназначенных для просмотра состояния и управления службами Windows.
Чтобы получить весь список командлетов Service, введите команду:
- Get-Service — позволяет получить службы на локальном или удаленном компьютере, как запущенные, так и остановленные;
- New-Service – создать службу. Создает в реестре и базе данных служб новую запись для службы Windows;
- Restart-Service – перезапустить службу. Передает сообщение об перезапуске службы через Windows Service Controller
- Resume-Service – возобновить службы. Отсылает сообщение о возобновлении работы диспетчеру служб Windows;
- Set-Service — изменить параметры локальной или удаленной службы, включая состояние, описание, отображаемое имя и режим запуска. Этот командлет также можно использовать для запуска, остановки или приостановки службы;
- Start-Service – запустить службу;
- Stop-Service – остановить службу (отсылает сообщение об остановке диспетчеру служб Windows);
- Suspend-Service приостановить службу. Приостановленная служба по-прежнему выполняется, однако ее работа прекращается до возобновления работы службы, например с помощью командлета Resume-Service.
Получить подробное описание и примеры использования конкретного командлета можно через Get-help:
Get-Service: получаем список служб и их состояние
Получить список и состояние (Running/Stopped) службы на локальном или удаленном компьютере можно с помощью командлета Get-Service. Параметр -Name позволяет делать отбор по имени службы. Имя службы можно задать с использованием подстановочного символа *.
Если вы не знаете точное имя службы, есть возможность найти службы по отображаемому имени с помощью параметра –DisplayName. Можно использовать список значений и подстановочные знаки.
.
Командлет Get-Service можно использовать для получения состояния служб на удаленных компьютерах, указав параметр -ComputerName. Можно опросить статус службы сразу на множестве удаленных компьютеров, их имена нужно перечислить через запятую. Например, приведенная ниже команда получает состояние службы Spooler на удаленных компьютерах RM1 и RM2.
Get-Service spooler –ComputerName RM1,RM2
Вывести все свойства службы позволит командлет Select-Object:
Get-Service spooler | Select-Object *
Командлет Select-Object позволит вывести определенные свойства службы. Например, нам нужно вывести имя, статус и доступные возможности службы Spooler:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
Командлет Get-Service имеет два параметра, которые позволяют получить зависимости служб:
- Параметр -DependentServices позволяет вывести службы, которые зависят от данной службы;
- Параметр -RequiredServices позволяет вывести службы, от которых зависит данная служба.
Приведенная ниже команда выводит службы, необходимые для запуска службе Spooler:
Get-Service –Name Spooler -RequiredServices
Следующая команда выводит службы, которые зависят от службы Spooler:
Get-Service –Name Spooler -DependentServices
При необходимости найти службы с определенным состоянием или параметрами, используйте командлет Where-Object. Например, получим список запущенных служб со статусом Running:
Для вывода служб с типом запуска Manual, выполните команду
Проверить, что в системе имеется указанная служба:
if (Get-Service «ServiceTest» -ErrorAction SilentlyContinue)
<
Write-host «ServiceTest exists»
>
Остановка, запуск, приостановка и перезапуск служб из PowerShell
Остановить службу можно с помощью командлета Stop-Service. Чтобы остановить службу печати, выполните команду:
Stop-Service -Name spooler
Командлет Stop-Service не выводит никаких данных после выполнения. Чтобы увидеть результат выполнения команды, используйте параметр -PassThru.
Обратите внимание, что не каждую службу можно остановить. Если есть зависимые службы, то получите ошибку
Для принудительной остановки используйте параметр –Force. Вы должны помнить, что остановятся также все зависимые службы:
Stop-Service samss –Force -Passthru
Следующая команда остановит перечисленные службы (bits,spooler) со статусом ”Running”:
get-service bits,spooler | where <$_.status -eq 'running'>| stop-service –passthru
Командлет Start-Service запускает остановленные службы:
Start-Service -Name spooler -PassThru
Служба не запустится, если есть остановленные зависимые службы. Чтобы их найти и включить:
get-service samss | Foreach
Командлет Suspend-Service может приостанавливать службы, допускающие временную приостановку и возобновление. Для получения сведений о возможности временной приостановки конкретной службы используйте командлет Get-Service со свойством «CanPauseAndContinue«.
Get-Service samss | Format-List name, canpauseandcontinue
Чтобы отобразить список всех служб, работа которых может быть приостановлена, введите команду:
Приостановим службу SQLBrowser:
Suspend-Service -Name SQLBrowser
Для возобновления работы приостановленной службы служит командлет Resume-service:
Resume-Service -Name SQLBrowser
Следующая команда возобновляет работу всех приостановленных служб:
get-service | where-object <$_.Status -eq "Paused">| resume-service
Командлет Restart-Service перезапускает службу:
Restart-Service -Name spooler
Эта команда запускает все остановленные сетевые службы компьютера:
get-service net* | where-object <$_.Status -eq "Stopped">| restart-service
Параметр —ComputerName у этих командлетов отсутствует, но их можно выполнить на удаленном компьютере с помощью командлета Invoke-Command или через пайп:
Например, чтобы перезапустите очередь печати на удаленном компьютере RM1, выполните команду:
Get-Service Spooler -ComputerName RM1 | Start-Service
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:\WINDOWS\System32\svchost.exe -k netsvcs»
С помощью параметра Get-WmiObject получим информацию о режиме запуска и описание службы
get-wmiobject win32_service -filter «name=’testservice'»
Изменить параметры новой службы можно командой
Set-Service -Name TestService -Description ‘My Service’ -StartupType Manual
Чтобы удалить службу используйте команду
(Get-WmiObject win32_service -Filter ″name=′TestService′″).delete()
Изменение учетной записи для запуска службы
Вы можете изменить учетную запись, из-под которой запускается служба. Получим имя учетной записи, которая используется для запуска службы TestService
get-wmiobject win32_service -filter «name=’TestService'» | Select name,startname
Для изменения имени и пароля учетной записи выполняем команды.
$svc = get-wmiobject win32_service -filter «name=’TestService'»
$svc.GetMethodParameters(«change»)
В результате получаем список параметров метода Change(). Считаем на каком месте находятся параметры StartName и StartPassword – 20 и 21 место соответственно.
$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,»Administrator»,»P@ssw0rd»)
Либо вы можете указать имя gMSA аккаунта. Пароль при этом не указывается.
Как видите, PowerShell позволяет легко управлять службами Windows. Можно создавать, останавливать, запускать и возобновлять службы, менять их свойства. Большинство командлетов позволяют управлять службами на удаленных компьютерах.