2026-10-05
PowerShell для сисадмина: 20 команд, которые экономят целый день
Содержание статьи

PowerShell для сисадмина: 20 команд, которые экономят целый день

PowerShell давно перестал быть просто оболочкой. Для администратора Windows это главный рабочий инструмент: с его помощью можно собрать информацию о сотнях серверов за минуту, а не за неделю. Но большинство сисадминов использует только десятую часть возможностей.

Эта статья собрана из реальной практики. Здесь 20 команд, которые закрывают повседневные задачи: процессы, службы, сеть, файлы, реестр, удалённое управление и автоматизация. Каждая команда дана с примером, который можно скопировать и сразу применить.

Почему стоит изучать PowerShell

Windows поставляется с консольным интерфейсом, но именно PowerShell даёт возможность управлять всем, что есть в системе, единообразно. Если команда что-то делает локально, она же делает это и на удалённом компьютере. Это значит, что один скрипт способен обойти весь парк серверов.

Коротко о том, как читать команды

PowerShell построен на глаголах и существительных. Глагол описывает действие, существительное — объект, с которым это действие выполняется. Отсюда понятные имена вроде Get-Process, Stop-Service, Set-Service.

Главный приём — конвейер. Вертикальная черта передаёт результат одной команды в другую. Вместо трёх промежуточных переменных одна строка делает всю работу.

Вот как устроены 20 команд из этой статьи, сгруппированных по задачам.

Работа с процессами и службами

Get-Process

Показывает запущенные процессы и их использование памяти. Это первая команда, которую открывают при жалобе пользователя на тормоза.

Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10

Она выводит десять процессов, которые потребляют больше всего оперативной памяти. Сразу видно, что именно съело ресурсы.

Stop-Process

Завершает проблемный процесс по имени или идентификатору.

Stop-Process -Name notepad -Force

Ключ -Force убивает процесс даже тогда, когда окно отказывается закрываться. Это аналог завершения из диспетчера задач, но без лишних кликов.

Get-Service

Показывает состояние всех служб Windows: работают они, остановлены или находятся в чём-то ещё.

Get-Service | Where-Object Status -eq 'Stopped' | Select-Object -First 20

Сочетание с Where-Object превращает вывод в отчёт. Здесь мы видим первые двадцать остановленных служб.

Start-Service и Restart-Service

Запускают и перезапускают службу. Перезапуск службы после смены конфигурации — самая частая операция администратора.

Restart-Service -Name spooler

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

Сеть и диагностика

Test-NetConnection

Замена старых проверок связи. Команда показывает не только доступность хоста, но и открытые порты.

Test-NetConnection mail.imaxis.ru -Port 25

Результат покажет, отвечает ли сервер на SMTP-порту. Раньше для этого приходилось ставить дополнительные утилиты, теперь всё встроено.

Resolve-DnsName

Проверяет DNS-записи прямо из PowerShell.

Resolve-DnsName imaxis.ru -Type MX

Удобно, когда нужно быстро убедиться, что MX-запись домена отвечает на нужный сервер.

Get-NetIPAddress

Показывает все IP-адреса, назначенные компьютеру, и их статус.

Get-NetIPAddress -AddressFamily IPv4 | Select-Object InterfaceAlias, IPAddress

Команда пригодится, когда на сервере несколько сетевых карт и нужно понять, какой адрес к какой карте привязан.

Invoke-RestMethod

Отправляет HTTP-запросы и возвращает ответ в виде готовых объектов. Это шлюз в мир веб-API.

Invoke-RestMethod -Uri 'https://imaxis.ru/sitemap.xml'

Любой сервис, у которого есть REST-интерфейс, становится управляемым прямо из PowerShell.

Сбор информации о системе

Get-ComputerInfo

Собирает всё о компьютере: производителя, модель, серийный номер, версию Windows.

Get-ComputerInfo -Property Manufacturer, Model, WindowsVersion

С этими данными легко заполнять инвентаризацию без пересылки скриншотов.

Get-CimInstance

Команда для работы с инструментарием Windows Management Instrumentation. С её помощью берут данные практически о чём угодно.

Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime, TotalVisibleMemorySize

Здесь видно время последней загрузки системы и объём памяти. Полезно искать серверы, которые давно не перезагружались.

Get-FileHash

Считает контрольную сумму файла.

Get-FileHash setup.exe -Algorithm SHA256

Команда проверяет, соответствует ли скачанный файл заявленному хэшу, и помогает отслеживать целостность дистрибутивов.

Файлы и реестр

Get-ChildItem

Список содержимого папки, но с возможностью фильтров, которые у команды dir нет.

Get-ChildItem C:Logs -Filter *.log -Recurse

Команда находит все лог-файлы со всеми вложениями, даже если папка разрослась на несколько уровней.

Test-Path

Проверяет существование файла, папки или ключа реестра и возвращает истину или ложь.

Test-Path HKLM:SOFTWAREMyApp

Такая проверка работает и в реестре, что делает команду незаменимой в скриптах.

Get-ItemProperty

Читает значения из реестра без открытия редактора.

Get-ItemProperty 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersion'

Удобно, когда нужно узнать версию установленного ПО или параметры обновлений по всей сети.

Copy-Item

Копирует файлы и папки с полным контролем.

Copy-Item C:Backup* D:Archive -Recurse -Force

В отличие от стандартного копирования, команда умеет перезаписывать и работать рекурсивно в одной строке.

Удалённое управление и автоматизация

Invoke-Command

Выполняет команды на удалённом компьютере, если настроен WinRM.

Invoke-Command -ComputerName SRV01 -ScriptBlock { Get-Service spooler }

Теперь можно управлять сервером, не открывая RDP-сессию, и одновременно обращаться к десяткам машин в цикле.

Enter-PSSession

Открывает интерактивную сессию с удалённым компьютером.

Enter-PSSession -ComputerName SRV01

После входа все команды выполняются как на удалённой машине, но без окна рабочего стола.

Export-Csv

Сохраняет результат любой команды в CSV-файл.

Get-Service | Export-Csv C:Reportservices.csv -NoTypeInformation

Экспорт удобно открывать в табличном редакторе или отдавать руководству в виде отчёта.

Where-Object и ForEach-Object

Две команды конвейера, вокруг которых строится почти вся автоматизация.

Get-Process | Where-Object CPU -gt 100 | ForEach-Object { $_.ProcessName }

Сначала фильтруем объекты по условию, потом что-то делаем с каждым результатом отдельно.

Get-Command

Показывает, какие команды доступны и как ими пользоваться.

Get-Command -Name *service*

Когда руки не помнят точного имени команды, эта подсказка экономит минуты поисков в документации.

Get-History

Показывает, какие команды вы уже вводили в этой сессии.

Get-History | Select-Object Id, CommandLine

Если решение задачи получилось удачным, его всегда можно повторить и сохранить в скрипт.

Как ускорить повседневную работу

Секрет скорости не в запоминании десятков команд, а в комбинировании. Конвейер решает половину задач. Вторая половина — настройка профиля.

Профиль PowerShell — это файл, который выполняется при каждом запуске. В него можно добавить функции-обёртки для своих частых действий. Достаточно один раз написать короткую функцию открытия нужной папки или подключения к серверу, и каждая следующая сессия начинается уже настроенной.

Полезно также подключить модуль PSReadLine, который включён по умолчанию. Он добавляет подсветку синтаксиса и история поиска по клавише вверх, как в баш-оболочке.

PowerShell, командная строка или bash

Критерий Командная строка Bash на Windows PowerShell
Объекты вместо текста Нет Нет Да
Работа с .NET-объектами Нет Ограниченно Да
Управление Windows-службами Ограниченно Нет Да
Удалённое выполнение Нет Через SSH WinRM и SSH
Скрипты с ветвлениями Сложно Да Да

PowerShell унаследовал сильные стороны обеих оболочек и добавил главное — работу с объектами. Вместо парсинга строк вы получаете готовые данные с именами свойств.

Частые заблуждения

PowerShell работает только в Windows

Это уже не так. Существует кросс-платформенная версия PowerShell Core, которая работает в Linux и macOS. Синтаксис большинства команд совпадает.

Команды надо знать наизусть

Достаточно знать структуру и уметь пользоваться Get-Command и Get-Help. Имена команд устроены одинаково, поэтому новая команда читается без словаря.

Скрипты опасны и могут всё сломать

Политика выполнения по умолчанию запрещает чужие скрипты. Любой серьёзный скрипт сначала проверяется на тестовом стенде. Осторожность встроена в саму систему.

Частые вопросы

Как быстро получить список всех служб с их статусом?

Используйте комбинацию Get-Service и Export-Csv, чтобы получить файл с отчётом и открыть его в табличном редакторе.

Как посмотреть, какое приложение занимает больше всего памяти?

Выполните Get-Process с сортировкой по WorkingSet64 и выборкой первых десяти процессов.

Можно ли выполнить команды на нескольких серверах сразу?

Да, Invoke-Command принимает список компьютеров и выполняет блок скрипта на всех сразу.

Чем Get-CimInstance отличается от Get-WmiObject?

Get-CimInstance — современная версия. Она работает по протоколу CIM, поддерживает подключаемые транспортные протоколы и быстрее в большинстве сценариев.

Где взять список всех доступных команд?

Get-Command -CommandType Cmdlet покажет сотни встроенных командлетов, а Get-Help даст документацию по любому из них.

Как видно из примеров

Двадцать команд — это фундамент, закрывающий ежедневные задачи. Процессы, службы, сеть, файлы и удалённое управление — всё в одной оболочке. Пока конкурирующие инструменты лишь отвечают на запросы, PowerShell позволяет выстраивать целые сценарии из простых шагов.

Начните с того, что проблемные задачи превращайте в команды. Через неделю таких замен операции, которые раньше занимали час, будут укладываться в одну строку.

Была ли статья полезна?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *