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

PowerShell — оболочка и язык команд Microsoft

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

История

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

Дальнейшее развитие:

ВерсияГодОсновные изменения
1.02006Первый стабильный выпуск
2.02009Скриптовый язык расширен, добавлена поддержка удалённого управления
3.02012Дескрипторы, работа с REST-сервисами, улучшенная автоматизация
4.02013Desired State Configuration (DSC)
5.0 / 5.12015–2016Защита скриптов (Just Enough Administration), расширенные модули
6.02018Открытый исходный код (GitHub), кроссплатформенность, переход на .NET Core
7.x2019 — н. в.Единая кроссплатформенная ветка PowerShell Core, поддержка Windows PowerShell 5.1 сохранена

С 2016 года PowerShell является проектом с открытым исходным кодом и распространяется под лицензией MIT.

Основные понятия

  • Cmdlet — базовая команда PowerShell, имеет вид Глагол-Существительное (например, Get-Process, Set-ItemProperty). Каждый cmdlet реализует определённый сценарий работы с данными.
  • Пайплайн (pipeline) — передача объектов от одной команды к другой через символ |. В отличие от текстовых пайплайнов UNIX-оболочек, здесь передаются полноценные объекты.
  • Сессия — экземпляр оболочки с загруженными модулями и переменными окружения.
  • Модуль — набор cmdlets, функций и ресурсов, подключаемый к сессии командой Import-Module.
  • Хранилище провайдеров — представление файловой системы, реестра Windows, сертификатов и других хранилищ в едином виде, что позволяет работать с ними одинаковыми командами (Get-ChildItem, Set-Content).

Синтаксис и возможности

Скрипты PowerShell сохраняются с расширением .ps1. Язык поддерживает переменные с префиксом $, условные конструкции if/else, циклы foreach и while, обработку ошибок через try/catch/finally, а также создание собственных функций. Типизация мягкая, но присутствует: значения автоматически приводятся к нужным типам .NET.

Пример простого скрипта:

``powershell Get-Process | Where-Object { $_.CPU -gt 100 } | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU ``

Команда выбирает пять процессов с наибольшим потреблением процессорного времени.

Управление Windows

PowerShell является основным средством автоматизации администрирования Windows. С его помощью управляются Active Directory, службами Windows, реестром, файловыми системами, виртуализацией Hyper-V, облаком Azure. Модуль Active Directory предоставляет более 100 cmdlets для управления доменными объектами.

В Windows 10 и Windows 11 PowerShell предустановлен как Windows PowerShell 5.1 (на базе .NET Framework) и, начиная с Windows 11, — PowerShell 7 (PowerShell Core) как отдельный пакет.

Кроссплатформенность

С версии 6.0 PowerShell работает на Linux (Ubuntu, CentOS, Red Hat, Debian, SUSE) и macOS. Это позволяет использовать единый язык сценариев в гибридных средах, автоматизировать развёртывание приложений и управлять серверами разного типа. На Linux поддерживаются основные cmdlets для работы с файловой системой, процессами и сетью, однако часть Windows-специфичных возможностей (реестр, COM-объекты) недоступна.

PowerShell и безопасность

Из-за широкого распространения PowerShell активно используется в кибератаках: для выполнения вредоносного кода, скачивания файлов, обхода антивирусной защиты. В ответ Microsoft внедрила механизмы AppLocker, Constrained Language Mode, подпись скриптов и политики исполнения (Execution Policy). Существуют также сторонние решения для аудита и мониторинга PowerShell-активности, например, модули Script Block Logging и Module Logging, встроенные в Windows.

Альтернативы

  • Bash и другие UNIX-оболочки — традиционные командные оболочки Linux/macOS, работающие с текстовыми потоками.
  • cmd.exe — классическая оболочка Windows, уступающая PowerShell по возможностям автоматизации.
  • Python — широко используется для скриптовой автоматизации, но не является оболочкой командной строки в строгом смысле.

Источники

  • Документация Microsoft Learn: «PowerShell»
  • Снайдер Д. «Windows PowerShell Cookbook»
  • Снайдер Д. «Windows PowerShell in Action»
  • Проект PowerShell на GitHub (github.com/PowerShell/PowerShell)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru