PowerShell на Linux: установка, использование и советы
Кратко
PowerShell теперь работает на Linux и предоставляет единый инструмент автоматизации для Windows и *nix‑систем. В этой статье — пошаговая установка (через терминал и GUI), запуск, отличия от Bash, рекомендации по безопасности, чеклисты для ролей и отладка.
О чем эта статья
- Что такое PowerShell и почему он появился на Linux
- Как установить PowerShell через командную строку и через графический интерфейс
- Как запустить и использовать PowerShell на Linux: основные команды и сценарии
- Как удалить PowerShell
- Советы по безопасности, совместимости и переходу
Что такое Windows PowerShell
Windows PowerShell — это среда командной строки и скриптовый язык на основе .NET, предназначенные для управления конфигурацией и автоматизации задач. В одном предложении: это мощный инструмент для администрирования систем и автоматизации рутинных операций.
Ключевые особенности:
- Доступ к WMI и COM (в Windows).
- Поддержка CIM и WS‑Management для управления сетевыми устройствами и удалёнными хостами.
- Скрипты на PowerShell (cmdlet) расширяют возможности автоматизации.
В 2016 году PowerShell был открыт как проект с кроссплатформенной реализацией на .NET Core. Это позволило запускать PowerShell на Linux и macOS и дало администраторам гибридный набор инструментов: и привычные команды Linux, и мощные конструкции PowerShell.
Что поменялось на Linux
PowerShell на Linux — это не просто порт Windows. Это версия, адаптированная под .NET Core, со следующими отличиями:
- Поддержка нативных Linux команд (ls, cat и т.д.) рядом с PowerShell‑cmdlet.
- Различия в работе с файловой системой и правами (POSIX ACL vs NTFS ACL).
- Набор доступных модулей и зависимостей может отличаться из‑за ограничений .NET Core.
Важно: поведение и имена некоторых команд совпадают, но реализация и окружение отличаются. Тестируйте скрипты при переносе между платформами.
Установка PowerShell на Linux (через командную строку)
Скачайте пакет с официальной страницы репозитория PowerShell на GitHub. Выберите пакет для вашей дистрибуции (DEB для Ubuntu/Debian, RPM для RHEL/CentOS, PKG для macOS).
Обычно файл окажется в каталоге “Загрузки” (Downloads). Выполните пример для Ubuntu:
sudo apt-get install libunwind8 libicu55
sudo dpkg -i /path/to/your/powershell.debЗамените /path/to/your/powershell.deb на реальный путь к скачанному DEB. Пример из статьи:
sudo apt-get install libunwind8 libicu55
sudo dpkg -i /home/moe/Downloads/powershell_6.0.0-alpha.14-1ubuntu1.16.04.1_amd64.deb- Во время установки потребуется пароль суперпользователя. Дождитесь завершения процесса — установщик подготовит и распакует пакеты.
Важно: зависимости и названия пакетов (libicu, libunwind) могут отличаться в новых версиях дистрибутивов. Если apt сообщает о других пакетах, следуйте его подсказкам.

Установка PowerShell на Linux (через графический интерфейс)
Если вы предпочитаете GUI, откройте каталог, где скачан DEB, и дважды щёлкните по файлу. Откроется Центр приложений Ubuntu (или аналог), где нужно нажать «Установить» (Install).

Во время установки система запросит ваш пароль.

После завершения вы получите уведомление об успешной установке.
Запуск и использование PowerShell на Linux
Откройте терминал и наберите:
powershellВы увидите приветствие PowerShell:
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.Под приглашением появится строка вида:
PS /home/ваш_пользователь>Теперь можно выполнять PowerShell‑команды (cmdlet) и скрипты. Пример вывода содержимого корня:
Get-ChildItem -Path /
Вы также можете использовать нативные команды Linux или их PowerShell‑аналоги:
ls
cat /etc/os-release
Get-Process
Get-ServiceЕсли команда поддерживается в обоих окружениях, результат может быть разным по формату. Привыкайте проверять вывод при написании скриптов.
Полезные команды для проверки установки
- Проверить версию PowerShell:
$PSVersionTable- Список модулей:
Get-Module -ListAvailable- Установить модуль (PowerShellGet):
Install-Module -Name Az -Scope CurrentUser(Примечание: установка модулей может требовать дополнительных пакетов и интернет‑доступа.)
Удаление PowerShell
Для Ubuntu/Debian:
sudo apt-get remove powershellПодтвердите удаление, нажав Y, когда система спросит.
Для RPM‑систем используйте аналогичный пакетный менеджер (yum/dnf) и пакетное имя powershell.
Различия и совместимость: когда это работает, а когда — нет
- Скрипты, использующие Windows‑специфичный API (WMI/COM), могут быть недоступны на Linux. Переписывайте такие сценарии с использованием кроссплатформенных механизмов (CIM, SSH, REST).
- Управление службами на Linux через systemd чаще делается через native инструменты (systemctl). PowerShell может вызывать systemctl, но нативные инструменты часто удобнее.
- Модули на PowerShell Gallery не всегда кроссплатформенны. Проверяйте совместимость модуля перед установкой.
Практическая методология миграции скриптов (мини‑план)
- Инвентарь скриптов: выделите скрипты, которые нужно перенести.
- Классификация: Windows‑зависимые, кроссплатформенные, утилитарные.
- Приоритет: мигрируйте кроссплатформенные и часто используемые сначала.
- Тестирование: создавайте тестовые стенды на Linux и выполняйте скрипты.
- Мониторинг: отслеживайте ошибки и корректируйте вызовы внешних утилит.
Чеклист для ролей (кто что должен сделать)
- Системный администратор:
- Проверить зависимости .NET и system libraries.
- Настроить политику установки модулей.
- Девопс инженер:
- Интегрировать PowerShell‑скрипты в CI/CD при необходимости.
- Обеспечить тесты на целевых дистрибутивах.
- Разработчик скриптов:
- Проверить переносимость и использовать кроссплатформенные API.
Шпаргалка команд PowerShell на Linux
- Запустить консоль: powershell
- Вывести содержимое директории: Get-ChildItem или ls
- Показать версию: $PSVersionTable
- Установить модуль: Install-Module -Name
- Удалить пакет: sudo apt-get remove powershell
Безопасность и рекомендации по жесткой настройке
- Запускайте скрипты от имени минимально необходимых привилегий.
- Ограничьте установку модулей в пользовательской области (Scope CurrentUser), если возможно.
- Храните секреты в хранилищах (Vault, Secret Manager) вместо явного текста в скриптах.
- Регулярно обновляйте .NET и PowerShell до поддерживаемых версий.
Отладка и частые проблемы
- Проблема: powershell не найден. Решение: проверьте, установлен ли пакет и находится ли /usr/bin/powershell в PATH.
- Проблема: недостающие зависимости (libicu, libunwind). Решение: установите зависимости через apt/yum и повторите установку.
- Проблема: модуль не устанавливается. Решение: посмотрите журнал ошибок, возможно, требуются права администратора или дополнительные пакеты.
Совет: запуск powershell с повышенной подробностью помогает понять проблемы:
PWDEBUG=1 powershellКогда PowerShell на Linux не подходит
- Вам нужны только простые утилиты shell (тогда лучше использовать bash/zsh).
- Скрипты тесно завязаны на Windows‑API и не подлежат порту. В таких случаях лучше оставить скрипты на Windows или переписать на кроссплатформенные инструменты.
Альтернативы
- Bash + POSIX‑утилиты — стандарт для большинства дистрибутивов.
- Python — удобен для кроссплатформенных админскриптов.
- Ansible — инфраструктура как код с поддержкой управления по SSH.
Таблица совместимости (упрощённая)
| Платформа | Поддержка PowerShell | Примечания |
|---|---|---|
| Ubuntu LTS | Высокая | DEB‑пакеты официально доступны |
| Debian | Высокая | Требует проверки зависимостей |
| CentOS/RHEL | Поддерживается | Используйте RPM пакеты |
| macOS | Поддерживается | PKG установщик |
| Минимальные встраиваемые системы | Ограничена | .NET Core может не поддерживаться |
Пример рабочего сценария: автопроверка сервиса
Простой PowerShell‑скрипт, который проверяет статус systemd‑сервиса и перезапускает при сбое:
$service = 'nginx'
$status = (systemctl is-active $service).Trim()
if ($status -ne 'active') {
Write-Output "Service $service is $status, attempting restart"
sudo systemctl restart $service
}Этот пример показывает гибридный подход: вызов systemctl (нативная утилита) из PowerShell.
Ментальные модели и эвристики
- Если задача связана с Windows‑спецификой — используйте Windows и PowerShell там.
- Если вы на Linux и вам нужен мощный язык управления — PowerShell может упростить сложную логику.
- Для одноразовых админопераций — чаще выбирают нативный shell.
Критерии приёмки
- PowerShell установлен и запускается командой powershell.
- $PSVersionTable показывает версию 6+ на .NET Core (или актуальную LTS‑версию).
- Тестовые кроссплатформенные скрипты выполняются без ошибок.
Решающее дерево для установки (Mermaid)
flowchart TD
A[Нужна кроссплатформенная автоматизация?] -->|Да| B{Есть зависимость от Windows API?}
B -->|Да| C[Оставьте на Windows или перепишите]
B -->|Нет| D[Устанавливайте PowerShell на Linux]
A -->|Нет| E[Используйте bash / python / другой инструмент]FAQ
Как проверить версию PowerShell?
В консоли PowerShell выполните:
$PSVersionTableМожно ли запускать существующие Windows‑скрипты на Linux без изменений?
Чаще нет. Скрипты, использующие Windows‑специфичные компоненты (COM, реестр, NTFS ACL), потребуют правок.
Как ставить модули на Linux?
Через Install-Module. При проблемах укажите Scope CurrentUser и убедитесь в наличии internet‑доступа.
Как полностью удалить PowerShell?
В Ubuntu/Debian: sudo apt-get remove powershell. Для RPM‑систем используйте yum/dnf remove powershell.
Заключение
PowerShell на Linux — это мощный инструмент, который расширяет возможности автоматизации и управления в гибридных инфраструктурах. Он объединяет сильные стороны PowerShell и гибкость Linux, но требует внимания при миграции скриптов и работе с зависимостями. Используйте чеклист, тестируйте и применяйте меры безопасности.
Если вы уже используете PowerShell на Linux, напишите в комментариях — какие задачи вы автоматизируете, и с какими проблемами столкнулись.
Ключевые идеи статьи приведены выше. Если нужно, я могу подготовить готовый шаблон CI/CD для запуска PowerShell‑скриптов на Linux или детализированный runbook для отката при неудачной миграции.
Похожие материалы
Как защитить телефон от слежки и перехвата
Тема и шрифт Блокнота в Windows 11
Microsoft Defender: как анализировать и удалять угрозы
Adobe Animate: руководство для начинающих
Mission DALEK: как создать свой эпизод Doctor Who