💻 PowerShell: Швейцарский нож администратора

Кратко: PowerShell — это не просто чёрное окно с мигающим курсором, а объектно-ориентированный язык сценариев и консоль от Microsoft, который умеет работать не с текстом, а с объектами. В отличие от старого CMD, здесь можно скормить команде результат другой команды, и она поймёт, что это не строчки, а, например, список процессов со свойствами (ID, имя, память). Родившись в 2006 году, сегодня он стал кроссплатформенным стандартом автоматизации для Windows, Linux и macOS.

▫️Как дошли до жизни такой · 2002 г. — Джеффри Сновер пишет «Monad Manifesto» — манифест новой shell-оболочки. Идея: заменить текстовый поток объектами .NET · 2006 г. — Первый релиз PowerShell 1.0. Интегрирован в Windows, но живёт пока отдельно · 2008–2012 гг. — PowerShell 2.0 и 3.0 становятся стандартом для Exchange, SQL Server, Windows Server. GUI-мастера теперь просто генерируют ps1-скрипты · 2016 г. — Microsoft открывает код PowerShell Core и выпускает его под лицензией MIT. Теперь он работает на Linux и macOS · 2026 г. — PowerShell 7.x — кроссплатформенный, быстрый, дружит с Docker, REST API и Azure. По умолчанию установлен в Windows 11 и Server 2025

▫️Главное отличие: объекты, а не текст CMD (и Bash) — всё текст. Вы запускаете dir, получаете «простыню» символов. Чтобы найти процесс, нужно резать строки через awk/sed. Это ненадёжно и медленно. PowerShell — всё объект. Вы запускаете Get-Process, получаете массив объектов класса Process. Отфильтровать по памяти: Get-Process | Where-Object { $_.WorkingSet64 -gt 1gb }. Это читается как английское предложение и работает с исходными данными, а не с «огрызками» текста .

▫️Анатомия командлетов (Cmdlets) Все команды в PowerShell подчиняются правилу «Глагол-Существительное» . · Глагол показывает действие (Get — взять, Set — установить, New — создать, Remove — удалить). · Существительное показывает объект (Process — процесс, Service — служба, Item — элемент диска). Примеры: Get-Service (получить службы), Stop-Process (остановить процесс). Забудьте про dir /? — здесь живёт Get-Help Get-Process.

▫️Труба (Pipeline) как конструктор В CMD труба (|) передаёт текст. В PowerShell она передаёт объекты целиком. Пример из реальной админки: нужно найти процессы, жрущие память, и остановить их. · Get-Process — получаем всех. · Where-Object { $_.PM / 1MB -gt 500 } — фильтруем тех, кто ест более 500 МБ ($_ — текущий объект в трубе). · Stop-Process — убиваем их. Почему круто: Не надо парсить вывод первой команды — идёт работа напрямую с числами в свойстве PM (Private Memory) .

▫️Где PowerShell правит бал (2026) · Администрирование Windows — управление AD, Exchange, реестром, IIS, Hyper-V. Всё, что можно сделать мышкой, можно сделать скриптом · CI/CD и DevOps — сборка проектов (MSBuild), управление контейнерами (Docker), деплой в Azure/AWS · Кроссплатформенность — скрипт, написанный на Windows, запустится на Linux-сервере. PowerShell Core 7.x работает везде · Безопасность и пентест — инструменты вроде PowerUp, Nishang. Хакеры любят PowerShell за доступ к .NET и глубокую интеграцию в ОС

▫️Культурный феномен · «Алиасы для староверов» — dir, ls, cat работают как алиасы Get-ChildItem и Get-Content. CMD-шникам не больно переходить · Версии — важно различать Windows PowerShell (старый, 5.1, только Win) и PowerShell 7 (кросс-платформа, современный). Пишите скрипты с осторожностью · Профиль — как .bashrc, только $PROFILE. Там можно настроить prompt, создать свои функции (вроде reload-profile) · «Можно всё» — от запроса к SQL-базе до вызова C#-кода на лету (Add-Type)

▫️Современное положение (2026) · PowerShell 7.5 — последний стабильный релиз на .NET 8. Скорость выросла, поддержка API улучшена · VS Code — основная среда для написания скриптов (ISE умер). Плагин PowerShell для дебага и IntelliSense · DSC (Desired State Configuration) — технология конфигурации «как код», которая конкурирует с Ansible внутри мира Windows · Сообщество — огромное. PSGallery (аналог NuGet для модулей) содержит модули для AWS, VMware, Veeam

#powershell #devops #автоматизация #windows #программирование #itadmin

💻 PowerShell: Швейцарский нож администратора | Сетка — социальная сеть от hh.ru