座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Ubuntu環境でPowerShellを試した

MicrosoftPowerShellオープンソース化され, Windows以外のプラットフォームでも利用できるようになったので, 手元のLinux環境で少し動かしてみました.

本当はArchLinuxで動かしたかったのですが, ビルド手順がよくわからなかったので, Ubuntu環境を用意してリリースビルドにあるUbuntu向けdebファイルを使うことにしました.

インストール

GitHubにあるUbuntu向けのビルド済みパッケージを取得します.

# wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.0-alpha.9/powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

先に必要な依存パッケージをインストールしておきます.

# apt-get install libunwind8 libicu55

取得したdebファイルを使って, PowerShellをインストールします.

# dpkg -i powershell_6.0.0-alpha.9-1ubuntu1.16.04.1_amd64.deb

起動と実行

powershell コマンドで起動できます.

kosuke@a64837ff1d84:~$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/kosuke>

インタラクティブシェルとして, コードを実行できます.

PS /home/kosuke> Write-Host "Hello world."
Hello world.
PS /home/kosuke>

ファイルに保存したスクリプト (ps1ファイル) の実行ができます. 30までの素数を戻すスクリプトです.

kosuke@a64837ff1d84:~$ cat tmp/primes.ps1
1..30 | where {
        if ($_ -lt 2) {
                return $false
        } elseif ($_ -eq 2) {
                return $true
        }

        if ($_ % 2 -eq 0) {
                return $false
        }

        for($i = 3; $i -le $_ / $i; $i += 2) {
                if($_ % $i -eq 0) {
                        return $false
                }
        }
        return $true
}
kosuke@a64837ff1d84:~$ powershell -File tmp/primes.ps1
2
3
5
7
11
13
17
19
23
29
kosuke@a64837ff1d84:~$

Windowsではps1スクリプトファイルを実行するために, 実行ポリシーを設定してやる必要がありましたが, Linux向けビルドでそういう指定は求められませんでした.

mscorlib 以外のアセンブリも利用できます.

kosuke@a64837ff1d84:~$ powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /home/kosuke> Add-Type -AssemblyName System.Xml.Linq
PS /home/kosuke>

ちょっと触ってみた感想

.NET標準のアセンブリに含まれているクラス/メソッドのほとんどは使えるようなので, 実用面では問題なさそうです.

インタラクティブシェルの使い勝手は良好だと思いました.

インタラクティブシェルではキーワードがハイライトされています. ただ, カラーリングされた文字色が, ターミナルのカラースキームを無視しているのかな? 数値リテラルが白い背景色に薄いオレンジ色でハイライトされてしまっていました. これは遠くない将来に修正されるか, 対応方法がどこかで提示されそう.

Tabキーによる入力補完が可能です.

シェルでの操作より, スクリプトを書いて実行することのほうが多いはずなので, あとはPowerShell ISEに相当する開発環境が用意できれば, Windows以外のプラットフォームにおいても, 必要十分なスクリプト環境になりそうですね.

広告を非表示にする