Основы работы с 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.
Связанные статьи:
- Как установить PowerShell в Linux (50%)
- Ошибка в PowerShell «New-Item: Access to the path '...' is denied» (РЕШЕНО) (50%)
- Подстановочные символы в PowerShell (50%)
- Операторы сравнения в PowerShell (50%)
- Регулярные выражения в PowerShell (50%)
- Как присвоить вывод командлета переменной и как использовать переменную с сохранённым выводом (RANDOM - 50%)