Главная >> Инструкции >> Работа с Powershell Linux

Работа с Powershell Linux

Компания Microsoft уже несколько лет развивает свободную версию командной оболочки PowerShell Core. Она использует открытый код, а её реализация, хоть и в урезанном виде, доступна и на Linux.

Мы рассмотрим особенности PowerShell, основные команды и способ установки. Это поможет определиться тем, кто хочет перейти с Windows на Linux, но при этом продолжить использование PowerShell. Скажем сразу, PowerShell не способна заменить Bash.

Что такое PowerShell?

PowerShell – это разработанная Microsoft оболочка командной строки и по совместительству сценарный язык. В Linux используется версия PowerShell Core с открытым кодом на основе .Net Core. Он имеет много общего с Bash, например, можно сохранять скрипты (в формате .ps1) и выстраивать конвейеры команд.

В Linux PowerShell не столь функционален, как в Windows. Во многом это связано с тем, что оболочка создавалась для администрирования операционной системы от Microsoft. Так что просто перенести скрипты на Linux не получится, в них наверняка есть обращения к реестру, планировщику и прочим программам, относящимся к Windows.

Также к особенностям PowerShell стоит отнести наличие алиасов у команд. Тем самым вы можете даже не заметить, но при использовании оболочки она будет задействовать собственные команды, практически не отличимые от родных команд. К слову, команды Bash также доступны в этой оболочке. Стоит отметить и то, что при удалённой работе через SSH PowerShell не даст использовать sudo.

jAAAAABJRU5ErkJggg==
В PowerShell при вызове pwd на самом деле исполняется get-location

Установка PowerShell в Linux

Несмотря на то, что PowerShell появился на Linux более пяти лет назад, его не спешат добавлять в репозитории. Он прописался в списках Альт, Arch, CentOS и Slackware. В остальных дистрибутивах лучше воспользоваться snap-пакетом.

Для установки PowerShell используйте команду:

sudo snap install powershell --classic

Вызвать оболочку можно командой:

pwsh

Работа с PowerShell в Linux

Давайте рассмотрим несколько основных команд PowerShell. Они не чувствительны к регистру, поэтому сложные команды запишем с использованием CamelCase.

  • $PSVersionTable – узнать версию оболочки;
  • get-command – вывести список доступных команд;
  • get-alias – вывести список алиасов;
  • set-alias -name имя_алиаса -value имя команды – создать алиас;
  • remove-item alias:имя_алиаса – удалить алиас в текущей сессии;
  • find-module – вывести список доступных модулей;
  • install-module имя_модуля – установить модуль;
  • get-help имя_команды – получить описание команды, её синтаксис и алиасы;
  • get-ChildItem – вывести содержимое папки;
  • new-item -ItemType directory -name 'имя_папки' – создать новую папку;
  • new-item имя_файла.abc – создать новый файл с расширением abc;
  • get_content имя_файла – вывести содержимое файла;
  • select_string -path имя_файла -pattern 'текст' – вывести имя файла, номер строки и содержимое строки, содержащее искомый текст.

Например, для того чтобы найти модуль bash выполните:

find-module bash

juthf80DS5CJwAAAABJRU5ErkJggg==
Модуль Bash относится к WSL, на Linux он бесполезен

Теперь рассмотрим get-СhildItem подробнее, с её помощью можно также искать файлы. Вот полезные параметры:

  • -path – указать путь;
  • -force – включить отображение скрытых файлов;
  • -recurse – поиск в подкаталогах;
  • -name – вывести только имена файлов;
  • -FollowSymLink – следовать по символическим ссылкам;
  • -include – имя должно содержать указанный текст. Например, -include ('*error*'+'*.log'), где '' ограничивают запрос, * указывает на позицию текста в имени, + (И) объединяет два условия, также можно использовать , (ИЛИ);
  • -exclude – исключает из выдачи файлы, содержащие указанный текст.

Нельзя не отметить то, что PowerShell опирается на объекты. К сожалению, в Linux эту функциональность нельзя задействовать в полной мере, да и перевод строк в объекты -нетривиальная задача, поэтому совмещать команды Bash и PowerShell – не лучшая идея.

Выводы

Теперь вы знаете как пользоваться PowerShell в Linux. В текущем виде едва ли может стать заменой Bash, для этого надо проделать большую работу по переносу команд или их адаптации под особенности и возможности этой оболочки. Пока что использование PowerShell в Linux превращается в комбинирование собственных команд и тех, что есть в системе изначально.

×

Если же говорить о переносе скриптов из Windows, то корректно заработают лишь единичные образцы, всё же Windows во многих ситуациях обращается к собственным библиотекам и реестру. Также могут быть проблемы с тем, что оболочка использует алиасы и команды, перекрывающие родные команды Linux.

К плюсам PowerShell можно отнести лишь более понятные команды и синтаксис, но всё это перевешивают минусы. При использовании в Linux происходит путаница с командами, логика Bash (работа со строками) плохо сочетается с принципами PowerShell (работа с объектами), подключаемые модули написаны для Windows, да и в целом набор команд не позволит писать полноценные скрипты для Linux.

Оцените статью

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (8 оценок, среднее: 5,00 из 5)
Загрузка...
Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

8 комментариев к “Работа с Powershell Linux”

  1. Единственное для чего может быть полезным - это подключение к удаленной win машине и выполнение на ней PowerShell скриптов.

    Ответить
  2. О госпаде зачем??? В bash есть все что необходимо, а для более продвинутых задач можно юзать встроенный в любые линуксы питон. Зачем нужна эта поделка в линуксе? Кстати как она вообще тут работает, она же основана на .NET который онли виндовс?

    Ответить
    • Емнип, тут не оригинальный powershell, как в винде, а "Powershell Core", который использует .NET core, который тоже опенсоурсный (dotnet)

      Ответить
  3. PowerShell в Линуск - это хорошая идея, просто вы не понимаете те кто критикует!
    Если вы универсальный админ, а не только виндовый или только линуксовый,
    то наличие единого интерфейса для выполнения одних и тех-же задач - это круто!
    Другой вопрос в том будут ли написанные под винду скрипты работать на линуксе без доработки..
    Если нет, тогда баян действительно козе не нужен.
    1 скрипт - много платформ - это хорошо. Но если нужно будет под каждую платформу дорабатывать скрипты, то это не айс.
    ..У меня как раз есть два скрипта на PowerShell - один отправку уведомления на почту, а другой в телеграм. Надо затестить на линухе

    Ответить

Оставьте комментарий