Ubuntu 16.04: Install PowerShell

Microsoft anounces that PowerShell becomes open source. This article will describe building and installing PowerShell.

1 Download and install PowerShell

PowerShell deb package is provided.

$ DL=https://github.com/PowerShell/PowerShell/releases/download/
$ wget ${DL}/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb
$ sudo apt install -y libunwind8 libicu55
$ sudo dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

2 Build and install PowerShell

Build and install PowerShell from source code..

2.1 Install dotnet

Install dotnet package with this.

$ sudo sh -c 'echo "deb [arch=amd64] \
https://apt-mo.trafficmanager.net/repos/dotnet-release/ xenial main" \
> /etc/apt/sources.list.d/dotnetdev.list'
$ sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
$ sudo apt update -y
$ sudo apt install -y dotnet-dev-*

2.2 Install packages for building PowerShell

Install packages for building PowerShell with apt.

$ sudo apt install -y cmake make g++

2.3 Download PowerShell source code

Download PowerShell source code with git clone –recursive.

$ git clone --recursive https://github.com/PowerShell/PowerShell.git
$ cd PowerShell

2.4 Build PowerShell

Build PowerShell with this.

$ cd src/libpsl-native
$ cmake -DCMAKE_BUILD_TYPE=Debug .
$ make
$ cd ../..
$ dotnet restore
$ cd src/ResGen
$ dotnet run -c Linux
$ cd ../TypeCatalogParser
$ dotnet run -c Linux
$ cd ../TypeCatalogGen
$ dotnet run -c Linux \
../Microsoft.PowerShell.CoreCLR.AssemblyLoadContext/CorePsTypeCatalog.cs \
powershell.inc
$ cd ../powershell-unix
$ dotnet build -c Linux

2.5 Install PowerShell

Install PowerShell binaries to /opt and create symbolic link to power shell command.

$ sudo cp -a bin/Linux/netcoreapp1.0/ubuntu.16.04-x64 /opt/powershell
$ sudo ln -s /opt/powershell/powershell /usr/local/bin/

Run powershell command.

$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/hiroom2/src/PowerShell/src/powershell-unix> dir

    Directory: /home/hiroom2/src/PowerShell/src/powershell-unix


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----          8/24/16   4:29 AM                bin
d-----          8/24/16   4:29 AM                obj
------          8/24/16   4:26 AM          42092 libgtest_main.a
------          8/24/16   4:26 AM        2793922 libgtest.a
------          8/24/16   4:26 AM         194760 libpsl-native.so
------          8/24/16   4:25 AM           2338 project.json
------          8/24/16   4:27 AM        1369383 project.lock.json


PS /home/hiroom2/src/PowerShell/src/powershell-unix>