Установка PowerShell на Debian 13, 12, 11: полное руководство

PowerShell — это кроссплатформенная система автоматизации и управления конфигурациями от Microsoft. Она использует объектный конвейер (работает не с текстом, а с объектами .NET), что делает её более мощной для сложных сценариев, чем традиционные Bash-скрипты. PowerShell 7.x работает на Linux, macOS и Windows.

⚠️ Важно: Поддержка Debian со стороны Microsoft различается по версиям:

Релиз DebianПоддержка MicrosoftРекомендуемый способ установки
Debian 13 (Trixie)✅ ПоддерживаетсяУниверсальный DEB-пакет
с GitHub
Debian 12 (Bookworm)✅ Поддерживается (до 2026-06-10)APT-репозиторий Microsoft
Debian 11 (Bullseye)❌ Не поддерживаетсяОбновите систему или
используйте неофициально

Оглавление

Предварительные требования

Перед установкой убедитесь, что:

  • У вас amd64 архитектура (PowerShell 7.x для Linux доступна только для 64-битных систем)
  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Обновление системы и установка зависимостей

sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gpg jq

Что делает: Устанавливает утилиты для скачивания ключей, работы с HTTPS и парсинга JSON (нужен для скрипта, определяющего последнюю версию PowerShell на GitHub).


Проверка архитектуры и версии Debian

. /etc/os-release
printf 'Debian %s (%s)\n' "$VERSION_ID" "$VERSION_CODENAME"
dpkg --print-architecture

Ожидаемый вывод: amd64. PowerShell для Linux не поддерживает 32-битные или ARM-системы.


Способ 1: Установка PowerShell на Debian 13 (Trixie) — универсальный DEB-пакет с GitHub

Microsoft пока не опубликовала стабильный пакет powershell в APT-репозитории для Debian 13 (Trixie). Поэтому используем универсальный DEB-пакет с GitHub.

Скрипт автоматической установки

(
  set -euo pipefail

  release_json=$(curl -fsSL https://api.github.com/repos/PowerShell/PowerShell/releases/latest)
  package_url=$(printf '%s' "$release_json" | jq -r 'first(.assets[] | select(.name | test("^powershell_[0-9.]+-1\\.deb_amd64\\.deb$")) | .browser_download_url) // empty')
  checksums_url=$(printf '%s' "$release_json" | jq -r 'first(.assets[] | select(.name == "hashes.sha256") | .browser_download_url) // empty')

  if [ -z "$package_url" ] || [ "$package_url" = "null" ] || [ -z "$checksums_url" ] || [ "$checksums_url" = "null" ]; then
    printf '%s\n' 'PowerShell release assets were not found.'
    exit 1
  fi

  package_file="/tmp/${package_url##*/}"
  checksums_file="/tmp/hashes.sha256"
  trap 'rm -f "$package_file" "$checksums_file"' EXIT

  curl -fL -o "$package_file" "$package_url"
  curl -fsSL -o "$checksums_file" "$checksums_url"

  (
    cd /tmp
    iconv -f UTF-16LE -t UTF-8 "$checksums_file" | grep -F " *${package_file##*/}" | sha256sum -c -
  )

  sudo apt install "$package_file"
)

Что делает скрипт:

  1. Определяет последнюю стабильную версию PowerShell через GitHub API
  2. Скачивает DEB-пакет и файл контрольных сумм
  3. Конвертирует контрольные суммы из UTF-16 в UTF-8
  4. Проверяет целостность пакета
  5. Устанавливает его через apt

Проверка установки

dpkg-query -W -f='${binary:Package} ${Version} ${Architecture}\n' powershell
command -v pwsh
pwsh --version

Ожидаемый вывод: powershell 7.6.1-1.deb amd64 и путь /usr/bin/pwsh.


Способ 2: Установка PowerShell на Debian 12 (Bookworm) — APT-репозиторий Microsoft

Этот способ удобен тем, что PowerShell будет обновляться вместе с системой через apt upgrade.

Скрипт добавления репозитория

(
  set -euo pipefail

  . /etc/os-release

  if [ "$VERSION_ID" != "12" ]; then
    printf 'This repository method is for Debian 12 (Bookworm), not Debian %s (%s).\n' "$VERSION_ID" "$VERSION_CODENAME"
    exit 1
  fi

  if [ "$(dpkg --print-architecture)" != "amd64" ]; then
    printf '%s\n' 'The Microsoft PowerShell repository package in this workflow is for amd64 systems.'
    exit 1
  fi

  keyring="/usr/share/keyrings/microsoft-powershell.gpg"
  source_file="/etc/apt/sources.list.d/microsoft-powershell.sources"

  curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor --yes -o "$keyring"

  printf '%s\n' \
    'Types: deb' \
    "URIs: https://packages.microsoft.com/debian/$VERSION_ID/prod" \
    "Suites: $VERSION_CODENAME" \
    'Components: main' \
    'Architectures: amd64' \
    "Signed-By: $keyring" | sudo tee "$source_file" >/dev/null
)

Проверьте ключ репозитория

gpg --show-keys --with-fingerprint /usr/share/keyrings/microsoft-powershell.gpg

Отпечаток должен быть: BC52 8686 B50D 79E3 39D3 721C EB3E 94AD BE12 29CF

Обновите список пакетов и установите PowerShell

sudo apt update
apt-cache policy powershell
sudo apt install -y powershell

Проверка установки

dpkg-query -W -f='${binary:Package} ${Version} ${Architecture}\n' powershell
command -v pwsh
pwsh --version

Альтернативные пакеты PowerShell

ПакетКомандаДля чего
powershellpwshСтабильная версия
(рекомендуется)
powershell-ltspwshСтарая LTS-ветка
(только если нужно)
powershell-previewpwsh-previewТестовые сборки
(не для продакшена)

Установка LTS-версии (Debian 12):

sudo apt install -y powershell-lts

Установка preview-версии:

sudo apt install -y powershell-preview

Запуск PowerShell

pwsh

Выход: exit


Обновление PowerShell

Для универсального DEB-пакета (Debian 13)

Повторно запустите скрипт установки из раздела «Способ 1» — он сам определит новую версию и установит её поверх старой.

Для APT-репозитория (Debian 12)

sudo apt update
sudo apt install --only-upgrade powershell -y

Удаление PowerShell

Удаление пакета

sudo apt remove powershell
hash -r

Если вы устанавливали preview-версию: замените powershell на powershell-preview.

Удаление репозитория Microsoft (Debian 12)

sudo rm -f /etc/apt/sources.list.d/microsoft-powershell.sources

Проверьте, не осталось ли ссылок на ключ:

grep -Rqs 'microsoft-powershell.gpg' /etc/apt/sources.list /etc/apt/sources.list.d || sudo rm -f /usr/share/keyrings/microsoft-powershell.gpg

Удаление пользовательских данных (опционально)

rm -rf ~/.config/powershell ~/.local/share/powershell ~/.cache/powershell

Решение типичных проблем

8.1 Ошибка: Unable to locate package powershell (Debian 13)

Симптом: sudo apt install powershell не находит пакет.

Причина: В репозитории Microsoft для Debian 13 может не быть стабильного пакета powershell.

Пошаговое решение:

Используйте универсальный DEB-пакет с GitHub (см. Способ 1).


8.2 Ошибка: sha256sum reports no properly formatted checksum lines

Симптом: При проверке контрольной суммы ошибка.

Причина: Файл hashes.sha256 имеет кодировку UTF-16.

Пошаговое решение:

Скрипт установки уже конвертирует файл через iconv -f UTF-16LE -t UTF-8. Если вы делаете вручную:

iconv -f UTF-16LE -t UTF-8 hashes.sha256 | grep -F ' *powershell_7.6.1-1.deb_amd64.deb' | sha256sum -c -

8.3 Ошибка: NO_PUBKEY или repository signature errors

Симптом: При sudo apt update ошибка подписи репозитория Microsoft.

Причина: Проблемы с GPG-ключом.

Пошаговое решение:

Шаг 1: Проверьте ключ:

gpg --show-keys --with-fingerprint /usr/share/keyrings/microsoft-powershell.gpg

Шаг 2: Если ключ отсутствует или неверен — переустановите его:

sudo curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor --yes -o /usr/share/keyrings/microsoft-powershell.gpg

Шаг 3: Обновите список пакетов:

sudo apt update

8.4 Ошибка: The wrong PowerShell command starts

Симптом: Вы установили preview-версию, но команда pwsh запускает стабильную.

Причина: Preview-версия запускается командой pwsh-preview, а не pwsh.

Пошаговое решение:

Для preview-версии используйте:

pwsh-preview

Проверьте, какие команды доступны:

command -v pwsh
command -v pwsh-preview

8.5 Debian 11 (Bullseye) — не поддерживается

Симптом: Вы пытаетесь установить PowerShell на Debian 11.

Причина: Microsoft больше не поддерживает Debian 11 для PowerShell.

Пошаговое решение:

Вариант A: Обновитесь до Debian 12 или 13.

Вариант B: Используйте неофициальную установку (на свой страх и риск) — универсальный DEB-пакет с GitHub может работать, но Microsoft не гарантирует поддержку.


Чек-лист: что проверить после установки

  • [ ] PowerShell установлен: pwsh --version показывает версию
  • [ ] Запускается интерактивная сессия: pwsh → приглашение PS>
  • [ ] Для Debian 12: репозиторий Microsoft добавлен: apt-cache policy powershell → строка с packages.microsoft.com
  • [ ] Для Debian 13: пакет установлен из GitHub, dpkg -l powershellii
  • [ ] Можно выполнить базовую команду: pwsh -c "Get-Process | Select-Object -First 5"

Основы работы с PowerShell

Получение версии:

$PSVersionTable.PSVersion

Список процессов:

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

Чтение файла:

Get-Content /etc/os-release | Select-String PRETTY_NAME

Работа с JSON:

'{"name":"debian","release":13}' | ConvertFrom-Json | Select-Object name, release

Обновление справки:

Update-Help -Scope CurrentUser

Выход:

exit

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

Тип данныхПуть
Профиль пользователя~/.config/powershell/Microsoft.PowerShell_profile.ps1
Пользовательские модули~/.local/share/powershell/Modules
История команд~/.local/share/powershell/PSReadLine/ConsoleHost_history.txt
Системные модули/usr/local/share/powershell/Modules

Часто задаваемые вопросы (FAQ)

Вопрос: PowerShell бесплатен?
Ответ: Да, PowerShell 7.x — это open-source проект под лицензией MIT.

Вопрос: В чём разница между PowerShell и Bash?
Ответ: Bash работает с текстом, PowerShell — с объектами .NET. Это делает PowerShell более мощным для обработки структурированных данных (JSON, XML, CSV).

Вопрос: Нужно ли удалять Bash, чтобы использовать PowerShell?
Ответ: Нет, они прекрасно сосуществуют. Вы можете использовать оба.

Вопрос: Как запустить PowerShell-скрипт?
Ответ: pwsh -f script.ps1 или ./script.ps1 (если файл исполняемый).

Вопрос: Поддерживает ли PowerShell команды Linux (ls, cat)?
Ответ: Да, они есть как алиасы к cmdlet’ам (Get-ChildItem, Get-Content), но лучше использовать полные имена для ясности.


Заключение

Теперь PowerShell установлен на вашем Debian. Вы можете использовать его для автоматизации задач, управления системами и обработки данных.

Что дальше?