Инструменты системного администратора Windows: оснастки, PowerShell, RSAT и Sysinternals

Инструменты системного администратора Windows: оснастки, PowerShell, RSAT и Sysinternals Полезное

Администрирование Windows — это настройка, контроль и поддержание в рабочем состоянии компьютеров и серверов на Windows: учетные записи и права, службы и процессы, обновления, журналы событий, диски, сеть и групповые политики. Администратор не просто «чинит компьютеры», а управляет состоянием системы так, чтобы любое изменение можно было проверить и откатить.

Ниже — какие инструменты для этого есть в самой Windows, что ставится отдельно от Microsoft, как выбирать инструмент под задачу и как вносить изменения безопасно. Команды PowerShell приведены для Windows 11 и Windows Server; где поведение зависит от версии PowerShell, это оговорено.

Три слоя инструментов

Чтобы не путаться, полезно развести инструменты по уровню:

  • Графические оснастки — окна вроде «Службы» или «Просмотр событий». Удобны для разовой задачи на одной машине.
  • Командная оболочка PowerShell — то же самое, но скриптом: повторяемо, на десятках машин, с сохранением результата.
  • Средства удаленного управления — RSAT, Windows Admin Center, удаленный PowerShell: управлять сервером, не заходя на него по RDP.

Отдельно стоят Sysinternals — бесплатный набор диагностических утилит Microsoft, который показывает то, чего не видно во встроенных окнах.

Встроенные оснастки MMC и системные окна

MMC (Microsoft Management Console) — общая «рамка», в которую загружаются оснастки. Файл с расширением .msc — это готовая консоль с набором оснасток. Их удобно запускать через Win+R, указав имя файла.

Задача Инструмент Как открыть
Процессы, нагрузка, автозагрузка приложений Диспетчер задач Ctrl+Shift+Esc или taskmgr
Детальная нагрузка на диск, сеть, память Монитор ресурсов resmon
Ошибки, перезагрузки, входы в систему Просмотр событий eventvwr.msc
Запуск, остановка и тип запуска служб Службы services.msc
Задачи по расписанию Планировщик заданий taskschd.msc
Драйверы и оборудование Диспетчер устройств devmgmt.msc
Разделы и тома Управление дисками diskmgmt.msc
Все основное в одном окне Управление компьютером compmgmt.msc
Локальные пользователи и группы Локальные пользователи и группы lusrmgr.msc
Локальные политики Редактор локальной групповой политики gpedit.msc

Оговорка по редакциям: gpedit.msc, lusrmgr.msc и secpol.msc есть в Pro, Enterprise и Education, а в домашней редакции (Home) штатно отсутствуют. В домене групповые политики настраивают не локально, а через консоль управления групповой политикой (gpmc.msc) из RSAT.

Как читать журналы. В «Просмотре событий» основное лежит в разделе «Журналы Windows»: Система, Приложение, Безопасность. Несколько кодов, которые полезно помнить: 41 (Kernel-Power) — система перезагрузилась без корректного завершения, 6008 (EventLog) — предыдущее завершение работы было неожиданным, 1074 — перезагрузку или выключение инициировал пользователь или программа, 4625 в журнале «Безопасность» — неудачная попытка входа. Код события — подсказка, а не диагноз: смотрите источник и текст события.

PowerShell 7 и Windows PowerShell 5.1

Здесь новички чаще всего путаются, потому что PowerShell на компьютере бывает два:

Windows PowerShell 5.1 PowerShell 7
Исполняемый файл powershell.exe pwsh.exe
Как появляется встроен в Windows 10/11 и Server ставится отдельно, например winget install --id Microsoft.PowerShell --source winget
Платформа .NET Framework, только Windows современный .NET, Windows, Linux, macOS
Развитие новых возможностей не получает, только исправления активно развивается
$PSVersionTable.PSEdition Desktop Core

Обе версии спокойно живут рядом. Практическое правило: новые скрипты пишите под PowerShell 7, но проверяйте на 5.1, если скрипт будет запускаться на машинах, где стоит только встроенная версия. Некоторые старые модули работают только в 5.1.

Сначала узнайте, в какой оболочке вы находитесь:

$PSVersionTable.PSVersion.ToString()
$PSVersionTable.PSEdition

В PowerShell 7.6 вывод будет таким (версия у вас может отличаться), в 5.1 вторая строка покажет Desktop:

7.6.6
Core

Три типовые задачи администратора одной командой. Первая — автоматические службы, которые сейчас не работают:

Get-Service |
    Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
    Select-Object Name, DisplayName, Status

Не каждая строка в результате — проблема: некоторые службы запускаются по триггеру или завершаются, сделав работу. Это список кандидатов для проверки, а не список сбоев.

Вторая — перезагрузки и аварийные выключения за неделю из журнала «Система»:

Get-WinEvent -FilterHashtable @{
    LogName   = 'System'
    Id        = 41, 1074, 6008
    StartTime = (Get-Date).AddDays(-7)
} -ErrorAction SilentlyContinue |
    Select-Object TimeCreated, Id, ProviderName

-ErrorAction SilentlyContinue нужен потому, что при отсутствии подходящих событий Get-WinEvent выдает ошибку, а не пустой список.

Третья — кто сейчас нагружает процессор:

Get-Process |
    Sort-Object CPU -Descending |
    Select-Object -First 5 Name, Id, CPU

Колонка CPU — суммарное процессорное время процесса в секундах с момента запуска, а не текущая загрузка в процентах. Для «что тормозит прямо сейчас» смотрите Диспетчер задач или Монитор ресурсов.

Если нужен классический cmd, он тоже никуда не делся: ipconfig, ping, whoami /groups, gpresult /r. Про запуск файлов из командной строки есть отдельная статья.

RSAT и Windows Admin Center: управление без входа на сервер

RSAT (Remote Server Administration Tools) — набор привычных оснасток для управления серверами с рабочего компьютера: «Active Directory — пользователи и компьютеры», DNS, DHCP, управление групповой политикой и другие. В Windows 10 (начиная с версии 1809) и Windows 11 RSAT ставится не отдельным скачиваемым пакетом, а как дополнительные компоненты системы. Нужна редакция Pro, Enterprise или Education.

Посмотреть доступные компоненты и поставить нужный можно из PowerShell, запущенного от имени администратора:

Get-WindowsCapability -Online -Name 'Rsat*' |
    Select-Object Name, State

Add-WindowsCapability -Online -Name 'Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0'

Первая команда покажет список компонентов с состоянием Installed или NotPresent. Точное имя компонента берите из этого списка, а не по памяти.

Windows Admin Center — бесплатная веб-консоль Microsoft: ставится шлюзом на Windows Server (для одного администратора — и локально на Windows 10/11) и открывается в браузере. Через нее видно службы, события, обновления, роли, хранилище и можно открыть удаленный PowerShell. Удобна там, где серверов много и нет желания держать RDP-сессии. В домене доступ к шлюзу стоит ограничить группой администраторов.

Для скриптов удаленное управление делается самим PowerShell: Invoke-Command -ComputerName srv01 -ScriptBlock { Get-Service Spooler } выполнит команду на сервере srv01 (имя — пример) через WinRM. В PowerShell 7 доступен и удаленный доступ по SSH.

Sysinternals: когда встроенного не хватает

Sysinternals — набор утилит, который распространяет Microsoft (раздел Sysinternals в документации Microsoft Learn, также есть в Microsoft Store). Наиболее востребованные:

Утилита Что показывает Когда брать
Process Explorer дерево процессов, загруженные DLL, открытые дескрипторы «кто держит файл», подозрительный процесс
Process Monitor обращения к файлам, реестру, сети в реальном времени программа падает или «не видит» настройку
Autoruns все точки автозапуска: службы, задачи, драйверы, ключи реестра медленная загрузка, чистка автозапуска
TCPView какие процессы держат сетевые соединения неизвестный трафик, занятый порт
PsExec запуск команды на удаленной машине разовая команда без WinRM

Autoruns и Process Explorer позволяют не только смотреть, но и отключать и завершать. Отключенный в Autoruns пункт можно вернуть галочкой, а вот удаленный — нет. Поэтому на рабочей машине сначала снимайте галочку, а удаляйте только после проверки.

Безопасность: права, UAC и проверка перед изменениями

UAC (контроль учетных записей) означает, что даже пользователь из группы «Администраторы» по умолчанию работает с урезанными правами, а полные права получает после подтверждения. Поэтому многие команды из этой статьи (установка RSAT, изменение служб, журнал «Безопасность») требуют запуска PowerShell «от имени администратора». UAC — не граница безопасности против вредоносного кода, а защита от случайного повышения прав.

Проверить, запущена ли оболочка с правами администратора (работает только в Windows):

$id = [Security.Principal.WindowsIdentity]::GetCurrent()
([Security.Principal.WindowsPrincipal]$id).IsInRole(
    [Security.Principal.WindowsBuiltInRole]::Administrator)

True — оболочка повышена, False — нет. Для повседневной работы держите отдельную учетную запись без прав администратора, а административную используйте только для административных задач.

Главный прием безопасной работы — параметр -WhatIf: команда показывает, что сделала бы, но ничего не меняет. Пример на временных файлах (прогон в PowerShell 7):

Get-ChildItem $env:TEMP\logs -Filter *.log | Remove-Item -WhatIf
What if: Performing the operation "Remove File" on target "...\logs\app1.log".
What if: Performing the operation "Remove File" on target "...\logs\app2.log".

Путь в выводе сокращен. Файлы остались на месте. Если список совпадает с ожиданием, уберите -WhatIf. Параметр поддерживают командлеты, которые меняют состояние (Remove-Item, Stop-Service, Set-Service и другие); в своих скриптах его дает SupportsShouldProcess.

Полный порядок изменения на примере: сервер без печати, службу диспетчера печати (Spooler) нужно остановить и отключить. Сначала сохраняем исходное состояние в файл с уникальным именем, потом пробный прогон, потом изменение и проверка:

#Requires -RunAsAdministrator
$name   = 'Spooler'
$backup = Join-Path $env:TEMP ("svc-{0}-{1:yyyy-MM-dd-HHmmss}.csv" -f $name, (Get-Date))
if (Test-Path $backup) { throw "Файл уже существует: $backup" }

# 1. Снимок исходного состояния
Get-Service -Name $name |
    Select-Object Name, StartType, Status |
    Export-Csv $backup -NoTypeInformation
"Снимок сохранен: $backup"

# 2. Пробный прогон и пауза на проверку (Ctrl+C - отмена)
Stop-Service -Name $name -WhatIf
Set-Service  -Name $name -StartupType Disabled -WhatIf
Read-Host "Проверьте строки What if и нажмите Enter для применения" | Out-Null

# 3. Изменение и проверка
Stop-Service -Name $name
Set-Service  -Name $name -StartupType Disabled
Get-Service  -Name $name | Select-Object Name, StartType, Status

Откат — не «включить как было по памяти», а вернуть именно сохраненное состояние из того файла, путь к которому напечатал скрипт:

$s = Import-Csv $backup
Set-Service -Name $s.Name -StartupType $s.StartType
if ($s.Status -eq 'Running') { Start-Service -Name $s.Name }
Get-Service -Name $s.Name | Select-Object Name, StartType, Status

Граница снимка: свойство StartType не различает отложенный автозапуск ни в 5.1, ни в 7 — для такой службы оно вернет Automatic, и откат потеряет отложенность. В PowerShell 7 полный тип есть в дополнительном свойстве StartupType (значение AutomaticDelayedStart, его же принимает Set-Service -StartupType), поэтому там сохраняйте в снимок и его. В 5.1 отложенность видно в services.msc или в выводе sc.exe qc <имя службы> — сверьте тип после отката.

Тот же принцип работает для реестра (reg export ветки перед правкой) и для крупных изменений (точка восстановления или снимок виртуальной машины). Изменение на рабочем сервере делайте в согласованное окно и сначала на тестовой машине.

Если не получилось

  • «Не удается найти gpedit.msc» — у вас Home-редакция; локальные политики в ней штатно недоступны.
  • «Отказано в доступе» при изменении службы или чтении журнала «Безопасность» — PowerShell запущен без повышения прав.
  • Get-WinEvent: «No events were found» — фильтр верный, но событий за период нет; это не сбой.
  • Команда есть в статье, но «не распознана» — проверьте $PSVersionTable.PSEdition: часть модулей доступна только в 5.1 или только в Windows.
  • Add-WindowsCapability завершается ошибкой — компьютер не видит источник компонентов (например, обновления идут через корпоративный сервер WSUS); это настраивает администратор домена.

Выводы

  • Администрирование Windows — управление учетными записями, службами, обновлениями, журналами, дисками и политиками так, чтобы изменения были проверяемы и обратимы.
  • Встроенные оснастки MMC (eventvwr.msc, services.msc, compmgmt.msc и другие) закрывают разовые задачи; часть из них отсутствует в Home.
  • PowerShell 5.1 встроен в Windows и не развивается, PowerShell 7 ставится отдельно и работает рядом с ним; различать их помогает $PSVersionTable.PSEdition.
  • RSAT и Windows Admin Center позволяют управлять серверами удаленно, Sysinternals дает глубокую диагностику процессов, автозапуска и сети.
  • Перед изменением: права администратора только на время задачи, -WhatIf, снимок исходного состояния и откат из этого снимка.

Где применяется / связь с практикой

Освойте тему на практике

Эти инструменты — ежедневная работа администратора Windows в офисе, поддержке и серверной инфраструктуре: разбор инцидентов по журналам, настройка служб и политик, автоматизация рутины скриптами. Системно, с доменом, групповыми политиками и PowerShell-автоматизацией это разбирается на курсе Администратор Windows. Попробовать формат можно на открытых уроках Otus.

FAQ

Можно ли удалить Windows PowerShell 5.1, если поставил PowerShell 7?
Нет смысла: 5.1 — компонент Windows, на него опираются системные скрипты и старые модули. Две версии работают рядом без конфликта.

Чем Windows Admin Center отличается от RDP?
RDP дает рабочий стол сервера целиком, а Windows Admin Center — веб-интерфейс к отдельным функциям (службы, события, обновления) без интерактивного входа на сервер.

Нужны ли сторонние программы, если есть встроенные инструменты?
Для базового администрирования хватает встроенных средств, RSAT и Sysinternals. Сторонние (анализатор трафика, менеджер паролей, система резервного копирования) добавляют под конкретную задачу и скачивают только с официального сайта разработчика.

OTUS Журнал
Скидка 5% 12-19 октября на курсы (popup)
Бесплатные открытые уроки (поп-ап)