Открыть сервисСервис

PowerShell — оболочка и язык сценариев Microsoft

PowerShell — кроссплатформенная оболочка командной строки и язык сценариев, разработанный корпорацией Microsoft. Основана на платформе .NET и работает в средах Windows, Linux и macOS. Предназначена для администрирования систем, автоматизации рутинных задач и управления ресурсами локальных и удалённых компьютеров. В отличие от классической командной строки Windows (cmd.exe), PowerShell оперирует объектами .NET, а не текстовыми строками, что позволяет передавать данные между командами без потерь структуры.

История

Разработка PowerShell началась в 2002 году под руководством Джеффри Снайдера (Jeffrey Snover) в подразделении Windows Server. Первая публичная бета-версия (тогда под названием Monad) была представлена в 2006 году, официальный релиз PowerShell 1.0 состоялся в ноябре 2006 года как компонент Windows Server 2008 и Windows Vista.

Основные версии:

ВерсияГодКлючевые изменения
1.02006Первый релиз, базовые cmdlets
2.02009Скриптовый язык, удалённое выполнение, Windows PowerShell ISE
3.02012Сессии, работа с REST API, улучшенный парсинг
4.02013Desired State Configuration (DSC)
5.0 / 5.12016PowerShell Gallery, JEA, расширенные модули
6.02018Открытый исходный код, кроссплатформенность (Windows, Linux, macOS)
7.x2020 — н. в.PowerShell 7 на .NET, параллельные конвейеры, улучшенная совместимость

Начиная с версии 6.0 проект развивается как открытый исходный код на GitHub под лицензией MIT. Windows PowerShell 5.1 остаётся встроенным компонентом Windows 10 и Windows 11, тогда как PowerShell 7 устанавливается отдельно и сосуществует с ним.

Устройство и основные понятия

Cmdlets

Базовый элемент команд — cmdlet (произносится «командлет»). Это специализированные команды вида Verb-Noun (например, Get-Process, Set-ItemProperty, New-Item). Каждый cmdlet возвращает объект, который может быть передан следующей команде в конвейере (pipeline).

Конвейер

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

``powershell Get-Service | Where-Object { $_.Status -eq 'Running' } | Select-Object Name, DisplayName ``

Провайдеры и диски

PowerShell предоставляет единый доступ к различным хранилищам данных через провайдеры: файловая система, реестр Windows, переменные окружения, сертификаты, реестр IIS и другие. Все они отображаются в виде «дисков» (например, HKLM:\ для реестра, Cert:\ для сертификатов).

Скриптовый язык

Скрипты сохраняются в файлах с расширением .ps1. Язык поддерживает переменные (все начинаются со знака $), функции, циклы, обработку ошибок, модули и объектно-ориентированные конструкции .NET.

Система безопасности

По умолчанию на современных Windows-системах политика выполнения скриптов (Execution Policy) ограничивает запуск неподписанных скриптов. Политику можно менять (Set-ExecutionPolicy), но она не является полноценной защитой от вредоносного кода — скорее это инструмент предотвращения случайного запуска. Для защиты от нежелательного выполнения также используют AppLocker и Windows Defender Application Control.

Применение

  • Администрирование Windows — управление пользователями, группами, реестром, службами, сетевыми настройками.
  • Автоматизация DevOps — развёртывание конфигураций, управление Azure, AWS и другими облаками через специализированные модули (Az, AWS.Tools).
  • Аудит и мониторинг — сбор логов, генерация отчётов, массовые операции над объектами Active Directory.
  • Кроссплатформенное администрирование — управление Linux-серверами через SSH и удалённые сессии.
  • Desired State Configuration — декларативное описание желаемого состояния системы и его применение.

PowerShell на Linux и macOS

Начиная с версии 6.0 PowerShell доступен на Linux (Ubuntu, CentOS, Red Hat, Debian, openSUSE) и macOS. Доступны большинство встроенных cmdlets, а также поддержка SSH-сессий для удалённого администрирования. На Linux-системах PowerShell устанавливается из репозиториев дистрибутивов или в виде пакета snap.

Ограничения

  • Скрипты .ps1 не выполняются двойным щелчком в оболочке по умолчанию — файл открывается в редакторе, что снижает риск случайного запуска.
  • Синтаксис PowerShell существенно отличается от Bash, что требует времени на переучивание специалистов, привыкших к Unix-оболочкам.
  • Некоторые модули (например, Active Directory) остаются эксклюзивными для Windows.

Источники:

  • Microsoft Learn — документация по PowerShell
  • Джеффри Снайдер, «Windows PowerShell 2.0: Технологии и решения»
  • GitHub — репозиторий PowerShell (PowerShell/PowerShell)
  • Материалы конференции Microsoft Ignite по PowerShell
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru