Поиск по сайту:

Как установить 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

Как видно из приведенного выше вывода, версия PowerShell6.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 одной командой

Статьи по данной тематике