Как установить Windows PowerShell Core 6.0 в Linux
PowerShell — это распределенная, масштабируемая, гетерогенная среда настройки и автоматизации, состоящая из интерактивной оболочки командной строки и языка сценариев для операционной системы Windows. Он построен на основе .NET и позволяет пользователям автоматизировать и упрощать системные задачи. Более подробную информацию о PowerShell можно найти по следующей ссылке.
В этом кратком руководстве мы рассмотрим, как установить PowerShell в 64-битных серверных версиях Ubuntu 14.04/16.04/18.04 LTS и CentOS 7.
Установите Windows PowerShell Core 6.0 в Linux.
PowerShell можно установить во многие популярные дистрибутивы Linux, включая Arch Linux, Debian, Ubuntu, Fedora, CentOS, SUSE. Сюда я включил инструкции по установке Debian, Ubuntu и CentOS.
В Ubuntu 14.04 LTS:
Загрузите и зарегистрируйте ключ GPG репозитория PowerShell:
wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Обновите список источников программного обеспечения:
sudo apt-get update
Затем установите PowerShell с помощью команды:
sudo apt-get install -y powershell
В Ubuntu 16.04 LTS:
Добавьте ключ GPG репозитория PowerShell:
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Обновите список источников программного обеспечения:
sudo apt-get update
Затем установите PowerShell с помощью команды:
sudo apt-get install -y powershell
В Ubuntu 18.04 LTS:
Зарегистрируйте ключ GPG репозитория PowerShell:
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Обновите списки репозиториев и установите PowerShell:
sudo apt-get update
sudo apt-get install -y powershell
В Debian 8:
sudo apt-get install curl apt-transport-https
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-jessie-prod jessie main" > /etc/apt/sources.list.d/microsoft.list'
sudo apt-get update
sudo apt-get install -y powershell
В Debian 9:
sudo apt-get install curl gnupg apt-transport-https
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/microsoft.list'
sudo apt-get update
sudo apt-get install -y powershell
В CentOS 7:
Добавьте репозиторий PowerShell от имени пользователя root:
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo
Установите PowerShell:
yum install -y powershell
Информацию о других дистрибутивах см. в официальных инструкциях по установке.
Теперь мы установили PowerShell. Далее мы увидим, как использовать его в реальном времени.
Начало работы с PowerShell
Обратите внимание, что PowerShell для Linux все еще находится на стадии разработки, поэтому вы можете столкнуться с некоторыми ошибками. Если есть какие-либо ошибки, присоединитесь к блогу сообщества PowerShell (ссылка приведена в конце этой статьи) и получите помощь.
После установки PowerShell выполните следующую команду, чтобы войти в консоль/сеанс PowerShell.
pwsh
Вот как выглядит консоль PowerShell на моем сервере Ubuntu 18.04 LTS.
PowerShell 6.1.2
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/pscore6-docs
Type 'help' to get help.
PS /home/sk>
PowerShell
В сеансе PowerShell мы упоминаем команды PowerShell как командлеты, и указываем знак приглашения PowerShell как PS />.
Работа в PowerShell почти похожа на BASH. Я выполнил несколько команд Linux в PowerShell. Кажется, почти все команды Linux работают в PowerShell. Кроме того, PowerShell имеет собственный набор команд (командлетов). Функция TAB (автозаполнение) работает так же, как в BASH.
Прозрачный? Что ж, давайте несколько примеров.
Посмотреть версию PowerShell
Чтобы просмотреть версию PowerShell, введите:
$PSVersionTable
Пример вывода:
Name Value
---- -----
PSVersion 6.1.2
PSEdition Core
GitCommitId 6.1.2
OS Linux 4.15.0-45-generic #48-Ubuntu SMP Tue Jan ...
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Как видно из приведенного выше вывода, версия PowerShell — 6.1.2.
Создание файлов
Чтобы создать новый файл, используйте команду 'New-Item', как показано ниже.
New-Item ostechnix.txt
Пример вывода:
Directory: /home/sk
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 2/11/19 10:28 AM 0 ostechnix.txt
или просто используйте ">", как показано ниже:
"" > ostechnix.txt
Здесь "" — означает, что файл пуст. ostechnix.txt — это имя файла.
Чтобы добавить некоторое содержимое в файл, выполните следующую команду:
Set-Content ostechnix.txt -Value "Welcome to OSTechNix blog!"
Или
"Welcome to OSTechNix blog!" > ostechnix.txt
Просмотр содержимого файла
Мы создали несколько файлов из PowerShell. Как нам просмотреть содержимое этих файлов? Это легко.
Просто используйте команду 'Get-Content', чтобы отобразить содержимое любого файла.
Get-Content <Path> <filename>
Пример:
Get-Content ostechnix.txt
Пример вывода:
Welcome to OSTechNix blog!
Удаление файлов
Чтобы удалить файл или элемент, используйте команду Remove-Item, как показано ниже.
Remove-Item ostechnix.txt
Проверим, действительно ли элемент был удален с помощью команды:
Get-Content ostechnix.txt
Вы должны увидеть результат, как показано ниже.
Get-Content : Cannot find path '/home/sk/ostechnix.txt' because it does not exist.
At line:1 char:1
+ Get-Content ostechnix.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (/home/sk/ostechnix.txt:String) [Get-Content], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
Или вы можете просто использовать команду "ls", чтобы проверить, существует ли файл или нет.
Просмотр запущенных процессов
Чтобы просмотреть список запущенных процессов, просто запустите:
Get-Process
Пример вывода:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0.00 0.00 0.02 599 599 agetty
0 0.00 0.00 0.00 2385 385 anacron
0 0.00 0.00 0.00 257 0 ata_sff
0 0.00 0.00 0.07 556 556 auditd
0 0.00 0.00 0.03 578 578 avahi-daemon
0 0.00 0.00 0.00 590 578 avahi-daemon
0 0.00 0.00 0.05 2327 327 bash
0 0.00 0.00 0.00 19 0 bioset
0 0.00 0.00 0.00 352 0 bioset
0 0.00 0.00 0.00 360 0 bioset
0 0.00 0.00 0.35 597 597 crond
0 0.00 0.00 0.00 31 0 crypto
0 0.00 0.00 0.11 586 586 dbus-daemon
0 0.00 0.00 0.03 63 0 deferwq
0 0.00 0.01 0.93 585 585 firewalld
0 0.00 0.00 0.00 30 0 fsnotify_mark
0 0.00 0.00 0.00 43 0 ipv6_addrconf
0 0.00 0.00 0.02 94 0 kauditd
0 0.00 0.00 0.00 20 0 kblockd
0 0.00 0.00 0.00 14 0 kdevtmpfs
0 0.00 0.00 0.00 351 0 kdmflush
0 0.00 0.00 0.00 359 0 kdmflush
0 0.00 0.00 0.00 13 0 khelper
0 0.00 0.00 0.03 29 0 khugepaged
0 0.00 0.00 0.00 26 0 khungtaskd
0 0.00 0.00 0.00 18 0 kintegrityd
0 0.00 0.00 0.00 41 0 kmpath_rdacd
0 0.00 0.00 0.00 42 0 kpsmoused
0 0.00 0.00 0.00 28 0 ksmd
0 0.00 0.00 0.17 3 0 ksoftirqd/0
0 0.00 0.00 0.02 27 0 kswapd0
0 0.00 0.00 0.00 2 0 kthreadd
0 0.00 0.00 0.00 39 0 kthrotld
0 0.00 0.00 0.01 2313 0 kworker/0:0
0 0.00 0.00 0.04 2369 0 kworker/0:0H
0 0.00 0.00 0.00 2440 0 kworker/0:1
0 0.00 0.00 0.05 2312 0 kworker/0:2H
0 0.00 0.00 0.28 2376 0 kworker/0:3
0 0.00 0.00 0.25 6 0 kworker/u2:0
0 0.00 0.00 0.00 272 0 kworker/u2:2
0 0.00 0.00 0.01 473 473 lvmetad
0 0.00 0.00 0.02 2036 036 master
0 0.00 0.00 0.00 21 0 md
0 0.00 0.00 0.00 7 0 migration/0
0 0.00 0.00 0.00 15 0 netns
0 0.00 0.00 0.22 653 653 NetworkManager
0 0.00 0.00 0.00 16 0 perf
0 0.00 0.00 0.01 2071 036 pickup
0 0.00 0.00 0.05 799 799 polkitd
0 0.00 0.02 5.02 2401 327 powershell
0 0.00 0.00 0.00 2072 036 qmgr
0 0.00 0.00 0.00 8 0 rcu_bh
0 0.00 0.00 0.73 10 0 rcu_sched
0 0.00 0.00 0.00 9 0 rcuob/0
0 0.00 0.00 0.51 11 0 rcuos/0
0 0.00 0.00 0.06 582 582 rsyslogd
0 0.00 0.00 0.00 267 0 scsi_eh_0
0 0.00 0.00 0.00 271 0 scsi_eh_1
0 0.00 0.00 0.00 275 0 scsi_eh_2
0 0.00 0.00 0.00 269 0 scsi_tmf_0
0 0.00 0.00 0.00 273 0 scsi_tmf_1
0 0.00 0.00 0.00 277 0 scsi_tmf_2
0 0.00 0.00 0.03 1174 174 sshd
0 0.00 0.00 0.79 2322 322 sshd
0 0.00 0.00 1.68 1 1 systemd
0 0.00 0.00 0.24 453 453 systemd-journal
0 0.00 0.00 0.04 579 579 systemd-logind
0 0.00 0.00 0.19 481 481 systemd-udevd
0 0.00 0.00 0.54 1175 175 tuned
0 0.00 0.00 0.02 12 0 watchdog/0
0 0.00 0.00 0.01 798 798 wpa_supplicant
0 0.00 0.00 0.00 17 0 writeback
0 0.00 0.00 0.00 378 0 xfs_mru_cache
0 0.00 0.00 0.00 379 0 xfs-buf/dm-1
0 0.00 0.00 0.00 539 0 xfs-buf/sda1
0 0.00 0.00 0.00 382 0 xfs-cil/dm-1
0 0.00 0.00 0.00 542 0 xfs-cil/sda1
0 0.00 0.00 0.00 381 0 xfs-conv/dm-1
0 0.00 0.00 0.00 541 0 xfs-conv/sda1
0 0.00 0.00 0.00 380 0 xfs-data/dm-1
0 0.00 0.00 0.00 540 0 xfs-data/sda1
0 0.00 0.00 0.51 383 0 xfsaild/dm-1
0 0.00 0.00 0.00 543 0 xfsaild/sda1
0 0.00 0.00 0.00 377 0 xfsalloc
Приведенная выше команда отобразит весь список запущенных процессов в вашей системе Linux.
Чтобы просмотреть какой-либо конкретный запущенный процесс, используйте параметр '-Name' с приведенной выше командой.
Например, чтобы просмотреть процесс powershell, запустите:
Get-Process -Name pwsh
Пример вывода:
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
0 0.00 99.32 3.28 2575 398 pwsh
Просмотр псевдонимов команд
Вам лень набирать целую команду? Просто введите несколько слов и нажмите клавишу табуляции, команда будет автоматически заполнена или отобразится список предлагаемых команд, как в оболочке Linux BASH.
Альтернативно, для некоторых команд существуют псевдонимы.
Например, чтобы очистить экран, введите: Clear-Host.
Или вы можете просто ввести псевдоним указанной выше команды «cls» или «clear», чтобы очистить экран.
Чтобы просмотреть список доступных псевдонимов, запустите:
Get-Alias
Вот полный список доступных псевдонимов:
CommandType Name Version Source
----------- ---- ------- ------
Alias ? -> Where-Object
Alias % -> ForEach-Object
Alias cd -> Set-Location
Alias chdir -> Set-Location
Alias clc -> Clear-Content
Alias clear -> Clear-Host
Alias clhy -> Clear-History
Alias cli -> Clear-Item
Alias clp -> Clear-ItemProperty
Alias cls -> Clear-Host
Alias clv -> Clear-Variable
Alias cnsn -> Connect-PSSession
Alias copy -> Copy-Item
Alias cpi -> Copy-Item
Alias cvpa -> Convert-Path
Alias dbp -> Disable-PSBreakpoint
Alias del -> Remove-Item
Alias dir -> Get-ChildItem
Alias dnsn -> Disconnect-PSSession
Alias ebp -> Enable-PSBreakpoint
Alias echo -> Write-Output
Alias epal -> Export-Alias
Alias epcsv -> Export-Csv
Alias erase -> Remove-Item
Alias etsn -> Enter-PSSession
Alias exsn -> Exit-PSSession
Alias fc -> Format-Custom
Alias fhx -> Format-Hex 3.1.0.0 Microsoft.PowerShell.Utility
Alias fl -> Format-List
Alias foreach -> ForEach-Object
Alias ft -> Format-Table
Alias fw -> Format-Wide
Alias gal -> Get-Alias
Alias gbp -> Get-PSBreakpoint
Alias gc -> Get-Content
Alias gci -> Get-ChildItem
Alias gcm -> Get-Command
Alias gcs -> Get-PSCallStack
Alias gdr -> Get-PSDrive
Alias ghy -> Get-History
Alias gi -> Get-Item
Alias gin -> Get-ComputerInfo 3.1.0.0 Microsoft.PowerShell.Management
Alias gjb -> Get-Job
Alias gl -> Get-Location
Alias gm -> Get-Member
Alias gmo -> Get-Module
Alias gp -> Get-ItemProperty
Alias gps -> Get-Process
Alias gpv -> Get-ItemPropertyValue
Alias group -> Group-Object
Alias gsn -> Get-PSSession
Alias gsv -> Get-Service
Alias gu -> Get-Unique
Alias gv -> Get-Variable
Alias h -> Get-History
Alias history -> Get-History
Alias icm -> Invoke-Command
Alias iex -> Invoke-Expression
Alias ihy -> Invoke-History
Alias ii -> Invoke-Item
Alias ipal -> Import-Alias
Alias ipcsv -> Import-Csv
Alias ipmo -> Import-Module
Alias kill -> Stop-Process
Alias md -> mkdir
Alias measure -> Measure-Object
Alias mi -> Move-Item
Alias move -> Move-Item
Alias mp -> Move-ItemProperty
Alias nal -> New-Alias
Alias ndr -> New-PSDrive
Alias ni -> New-Item
Alias nmo -> New-Module
Alias nsn -> New-PSSession
Alias nv -> New-Variable
Alias oh -> Out-Host
Alias popd -> Pop-Location
Alias pushd -> Push-Location
Alias pwd -> Get-Location
Alias r -> Invoke-History
Alias rbp -> Remove-PSBreakpoint
Alias rcjb -> Receive-Job
Alias rcsn -> Receive-PSSession
Alias rd -> Remove-Item
Alias rdr -> Remove-PSDrive
Alias ren -> Rename-Item
Alias ri -> Remove-Item
Alias rjb -> Remove-Job
Alias rmo -> Remove-Module
Alias rni -> Rename-Item
Alias rnp -> Rename-ItemProperty
Alias rp -> Remove-ItemProperty
Alias rsn -> Remove-PSSession
Alias rv -> Remove-Variable
Alias rvpa -> Resolve-Path
Alias sajb -> Start-Job
Alias sal -> Set-Alias
Alias saps -> Start-Process
Alias sasv -> Start-Service
Alias sbp -> Set-PSBreakpoint
Alias sc -> Set-Content
Alias select -> Select-Object
Alias set -> Set-Variable
Alias si -> Set-Item
Alias sl -> Set-Location
Alias sls -> Select-String
Alias sp -> Set-ItemProperty
Alias spjb -> Stop-Job
Alias spps -> Stop-Process
Alias spsv -> Stop-Service
Alias sv -> Set-Variable
Alias type -> Get-Content
Alias where -> Where-Object
Alias wjb -> Wait-Job
Чтобы просмотреть псевдоним какой-либо конкретной команды, введите:
Get-Alias cls
Пример вывода:
CommandType Name Version Source
----------- ---- ------- ------
Alias cls -> Clear-Host
Просмотр полного списка доступных команд
Чтобы просмотреть список всех доступных команд PowerShell, выполните:
Get-Command
Просмотр справки
Не знаете, что конкретно будет делать? Без проблем. Просто введите «help», чтобы получить помощь. Вам не придется искать в Интернете.
Вы также можете использовать команду 'Get-Help' вместе с любыми командами PowerShell. Это что-то похожее на команду 'man' в Linux.
Например, чтобы отобразить раздел справки команды Clear-Host, выполните:
Get-Help Clear-Host
Пример вывода:
NAME
Clear-Host
SYNOPSIS
SYNTAX
Clear-Host [<CommonParameters>]
DESCRIPTION
RELATED LINKS
https://go.microsoft.com/fwlink/?LinkID=225747
REMARKS
To see the examples, type: "get-help Clear-Host -examples".
For more information, type: "get-help Clear-Host -detailed".
For technical information, type: "get-help Clear-Host -full".
For online help, type: "get-help Clear-Host -online
Как вы видите выше, Get-Help отображает раздел справки по конкретной команде PowerShell, например имя команды, формат синтаксиса, псевдонимы, примечания и т. д.
Чтобы выйти из консоли PowerShell, просто введите:
exit
Надеюсь, вы получили общее представление о том, как установить альфа-версию PowerShell Core в Linux (Ubuntu и CentOS), а также об основных принципах ее использования.
Дополнительная литература:
- PowerShell на GitHub
- Начало работы с PowerShell из Channel9 - видеоруководство
- Страница сообщества PowerShell
- Канал PowerShell на YouTube
Связанное чтение:
- Установить подсистему Windows для Linux одной командой