5.1 Что такое службы Windows
Службы Windows — это приложения, которые работают в фоновом режиме и выполняют системные функции без взаимодействия с пользователем.
Основные характеристики служб
- Автоматический запуск — могут запускаться при загрузке системы
- Фоновый режим — работают без пользовательского интерфейса
- Системные привилегии — могут иметь повышенные права доступа
- Управляемость — можно запускать, останавливать и настраивать
Типы служб
По типу запуска:
- Автоматический — запускаются при загрузке системы
- Вручную — запускаются по требованию
- Отключено — не запускаются
Просмотр служб в PowerShell
# Просмотр всех служб
Get-Service
# Просмотр запущенных служб
Get-Service | Where-Object {$_.Status -eq "Running"}
# Просмотр остановленных служб
Get-Service | Where-Object {$_.Status -eq "Stopped"}
5.2 Управление службами
PowerShell предоставляет полный набор команд для управления службами Windows.
Запуск и остановка служб
# Запуск службы
Start-Service -Name "Spooler"
# Остановка службы
Stop-Service -Name "Spooler"
# Перезапуск службы
Restart-Service -Name "Spooler"
# Приостановка службы
Suspend-Service -Name "Spooler"
Настройка служб
# Изменение типа запуска службы
Set-Service -Name "Spooler" -StartupType Automatic
Set-Service -Name "Spooler" -StartupType Manual
Set-Service -Name "Spooler" -StartupType Disabled
# Просмотр настроек службы
Get-Service -Name "Spooler" | Select-Object Name, Status, StartType
Фильтрация служб
# Поиск служб по имени
Get-Service -Name "*spool*"
# Фильтрация по статусу
Get-Service | Where-Object {$_.Status -eq "Running" -and $_.StartType -eq "Automatic"}
# Сортировка служб
Get-Service | Sort-Object Status, Name
5.3 Диагностика служб
Диагностика проблем со службами включает анализ журналов событий, проверку зависимостей и мониторинг производительности.
Анализ зависимостей
# Просмотр зависимостей службы
Get-Service -Name "Spooler" -DependentServices
# Просмотр служб, от которых зависит данная служба
Get-Service -Name "Spooler" -RequiredServices
Просмотр журналов событий
# Просмотр событий службы
Get-WinEvent -FilterHashtable @{LogName='System'; ID=7034} | Where-Object {$_.Message -like "*Spooler*"}
# Просмотр ошибок служб
Get-WinEvent -FilterHashtable @{LogName='System'; Level=2} | Where-Object {$_.Message -like "*service*"}
Мониторинг производительности
# Просмотр процессов службы
Get-Process | Where-Object {$_.ProcessName -like "*spool*"}
# Мониторинг использования ресурсов
Get-Counter "\Process(spoolsv)\% Processor Time"
5.4 Создание пользовательских служб
Создание собственных служб позволяет автоматизировать выполнение задач в фоновом режиме.
Создание службы через sc.exe
# Создание службы
sc create "MyService" binPath= "C:\MyApp\MyService.exe" start= auto
# Удаление службы
sc delete "MyService"
# Просмотр службы
sc query "MyService"
Создание службы через PowerShell
Пример создания службы
# Создание службы
New-Service -Name "MyPowerShellService" -BinaryPathName "powershell.exe -File C:\Scripts\MyService.ps1" -StartupType Automatic -DisplayName "My PowerShell Service"
# Удаление службы
Remove-Service -Name "MyPowerShellService"
Управление службами через WMI
# Просмотр служб через WMI
Get-WmiObject -Class Win32_Service | Where-Object {$_.Name -like "*spool*"}
# Запуск службы через WMI
$service = Get-WmiObject -Class Win32_Service -Filter "Name='Spooler'"
$service.StartService()