Основы работы с PowerShell в Linux [Руководство для начинающих]

PowerShell для Linux

За последние годы в Microsoft появилась тенденция делать некоторые свои продукты кроссплатформенными и открывать их исходный код. Также сам Linux стал частью Windows в виде подсистемы. PowerShell, который изначально был компонентом только для Windows, был выпущен с открытым исходным кодом и 18 августа 2016 года стал кроссплатформенным, доступным для Linux и Mac OS.

PowerShell — это система автоматизации задач и управления конфигурацией, разработанная Microsoft. Он состоит из интерпретатора командного языка (оболочки) и языка сценариев, построенного на .NET Framework.

Он предлагает полный доступ к COM (Component Object Model) и WMI (Windows Management Instrumentation), тем самым позволяя системным администраторам выполнять административные задачи как в локальных, так и в удалённых системах Windows, а также WS-Management и CIM (Common Information Model), позволяя администрировать удалённых систем Linux плюс сетевые устройства.

В рамках этой структуры административные задачи в основном выполняются конкретными классами .NET, называемыми командлетами (произносится как command-let). Подобно сценариям оболочки в Linux, пользователи могут создавать сценарии или исполняемые файлы, сохраняя группы командлетов в файлах, следуя определённым правилам. Эти сценарии можно использовать как независимые утилиты или инструменты командной строки.

Как установить PowerShell в Linux

Установка на разных дистрибутивах различается, поэтому процесс установки был выделен в отдельный раздел: Как установить PowerShell в Linux.

Особенности PowerShell в Linux

1. Регистр команд в PowerShell неважен

В Windows неважен регистр команд и имён файлов и папок — это большое отличие от Linux, где регистр и команд и файлов имеет значение.

PowerShell унаследовал особенность от Windows — регистр неважен. Хотя в данном руководстве приводятся команды написанные с использованием разного регистра (например, Get-Date), на самом деле это сделано для улучшения восприятия и не имеет значения, будете ли вы вводить Get-Date, GET-DATE, get-date или gET-dATE.

2. Отсутствуют некоторые команды

Набор команд в PowerShell зависит от подключённых модулей, то есть даже на компьютере Windows если установить, например, Active Directory, то в PowerShell появятся новые команды.

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

3. Много псевдонимов и сокращений

Вы можете увидеть в скриптах и примерах команд PowerShell необычное написание команд — в PowerShell допускается сокращённая запись, а также имеется много псевдонимов, то есть одно и то же действие можно выполнить командами записываемыми по-разному.

4. Версии PowerShell

Обратите внимание, что в настоящее время по умолчанию в Windows предустановлен PowerShell 5, а здесь показана установка последней версии PowerShell 7. На Windows также можно установить PowerShell 7, но это версия не заменит предустановленную — будет 2 версии PowerShell, причём при запуске через «Меню продвинутого пользователя» (Win+x) будет открываться PowerShell 5, а при запуске Windows Terminal будет открываться PowerShell 7.

5. Пропуск названий опций

Некоторые опции являются позиционными и при указании их значений можно пропускать название опций — в первое время это может казаться запутанным.

Как использовать Powershell в Linux

В этом разделе у нас будет краткое введение в Powershell; где мы увидим, как запустить PowerShell, запустить некоторые базовые команды, посмотрим, как работать с файлами, каталогами и процессами. Позже вы узнаете, как составить список всех доступных команд, показать справку по командам и псевдонимы.

Чтобы запустить Powershell, введите:

pwsh

Вы можете проверить версию Powershell с помощью следующей команды:

$PSVersionTable

Если вам нужен только номер версии, то используйте следующую конструкцию:

Get-Host | Select-Object Version

Выполнение некоторых основных команд Powershell в Linux.

Показать текущую дату:

Get-Date

Показать время работы компьютера:

Get-Uptime

Показать текущий рабочий каталог:

Get-Location

Работа с файлами и каталогами в Powershell

1. Создайте новый пустой файл можно двумя способами:

New-Item hackware.stuff

Или:

"">hackware.stuff

Затем добавьте к нему содержимое и просмотрите содержимое файла.

Set-Content hackware.stuff -value "Делаем pwsh.ru - это весело!"
Get-Content hackware.stuff

2. Удалите файл в PowerShell.

Remove-Item hackware.stuff
Get-Content hackware.stuff

3. Создайте новый каталог.

Посмотрите на следующий набор команд:

mkdir hackware-files
cd hackware-files
"">domains.list
ls

Кажется знакомым? Да, как уже было упомянуто, в PowerShell много псевдонимов. Эти же самые действия можно выполнить следующими командами:

New-Item hackware-files -ItemType "directory"
Set-Location hackware-files
New-Item domains.list
Get-ChildItem -Name

На самом деле, команды не просто выполняют одинаковые действия — они идентичны.

4. Чтобы показать длинный список, который отображает подробную информацию о файлах и каталогах, включая режим (тип файла), время последнего изменения, введите:

dir

Или:

Get-ChildItem

Чтобы вывести содержимое определённой папки (в данном случае корня файловой системы) запустите:

Get-ChildItem /


Работа с процессами в PowerShell

Как посмотреть все запущенные процессы в Linux с помощью PowerShell:

Get-Process

Чтобы просмотреть подробную информацию об одном или группе запущенных процессов с заданным именем, укажите имя процесса в качестве аргумента предыдущей команды следующим образом:

Get-Process httpd

Значение единиц в выводе выше:

  • NPM(K) – объем невыгружаемой памяти, которую использует процесс, в килобайтах.
  • PM(K) – объем выгружаемой памяти, которую использует процесс, в килобайтах.
  • WS(K) – размер рабочего набора процесса в килобайтах. Рабочий набор состоит из страниц памяти, на которые недавно ссылался процесс.
  • CPU(s) – оличество процессорного времени, которое процесс использовал на всех процессорах, в секундах.
  • ID – ID процесса (PID).
  • ProcessName – имя процесса.

Чтобы получить все возможные данные об одном или более процессов используйте команду вида (замените httpd на имя интересующего вас процесса):

Get-Process httpd | Format-List *

Чтобы остановить процесс с ID 10500 используйте команду как показано ниже:

Get-Process -Id 10500 | Stop-Process

Получение справки в PowerShell

Чтобы узнать больше, получите список всех команд PowerShell для различных задач:

Get-Command

Есть возможность фильтровать информацию, выводимую командой Get-Command. Допустим вы хотим посмотреть команды PowerShell содержащие слово «Alias», для этого нужно выполнить следующую команду:

Get-Command -Name *Alias

Чтобы вывести справку о команде (командлете) используйте следующее:

Get-Help КОМАНДЛЕТ

Например, чтобы вывести справку о командлете Get-Alias:

Get-Help Get-Alias

Чтобы получить самую полную справку о команде Get-Command выполните следующее:

Get-Help Get-Command -Full

Псевдонимы в PowerShell

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

Get-Alias

Чтобы получить информацию об определённом псевдониме укажите его имя:

Get-Alias -Name pwd

История команд PowerShell

И последнее, но не менее важное: отобразите историю команд (список команд, которые вы запускали ранее) следующим образом:

history

Итак, это было введение в PowerShell на Linux. Конечно же, на самом деле PowerShell может намного больше чем создавать файлы и показывать запущенные процессы.

Заходите https://pwsh.ru чтобы не пропустить новые статьи по командам и программированию на PowerShell, а также по системному администрированию с помощью PowerShell.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *