しばたテックブログ

気分で書いている技術ブログです。

LinuxへのPowerShellのインストールが簡単になりました

【2018/06/14追記】

最新のインストール方法はDocsにありますのでこちらをご確認ください。

【追記ここまで】


先日PowerShell Blogで発表された内容について実際に試してみました。

blogs.msdn.microsoft.com

packages.microsoft.comリポジトリ

Ubuntu(apt)およびCentOS(yum)向けにMicrosoft独自のリポジトリhttps://packages.microsoft.comが提供され、このリポジトリからPowerShellをインストールおよびアップデートできる様になりました。

独自リポジトリなので最初はリポジトリの登録が必要になります。

1. Ubuntu 14.04でのインストール手順

はじめにapt-key addコマンドでリポジトリの公開鍵を追加し、/etc/apt/sources.list.d/ディレクトリに独自リポジトリの設定を追加します。
PowerShell Blogではその後apt-get updateしてたので本エントリでも記載しておきます。*1

# Bash
# リポジトリの公開鍵(GPGキー)の追加
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
# Microsoft Ubuntu repositoryの登録
curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
# Update apt-get
sudo apt-get update

リポジトリを追加したらapt-get installでPowerShellをインストールできます。

# Bash
sudo apt-get install -y powershell

ちなみにBash on Ubuntu on Windowsでもこの手順でインストール可能です。

2. Ubuntu 16.04でのインストール手順

リポジトリのURLが14.04と異なるだけで、ほかの手順は同一です。

# Bash
# リポジトリの公開鍵(GPGキー)の追加
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
# Microsoft Ubuntu repositoryの登録
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
# Update apt-get
sudo apt-get update

リポジトリを追加したらapt-get installでPowerShellをインストールできます。

# Bash
sudo apt-get install -y powershell

3. CentOS 7でのインストール手順

CentOSの場合は/etc/yum.repos.d/ディレクトリに独自リポジトリの情報を追加するだけでOKです。*2

# Microsoft RedHat repositoryの登録
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo

あとはyum installでPowerShellをインストールできます。

# Bash
sudo yum install -y powershell

リポジトリ情報

https://packages.microsoft.comの情報をざっと確認してみると以下の通りでした。
特別な設定はない普通のリポジトリの様です。

Ubuntu 14.04

$ cat /etc/apt/sources.list.d/microsoft.list

deb [arch=amd64] https://packages.microsoft.com/ubuntu/14.04/prod trusty main

Ubuntu 16.04

$ cat /etc/apt/sources.list.d/microsoft.list

deb [arch=amd64] https://packages.microsoft.com/ubuntu/16.04/prod xenial main

CentOS7

$ cat /etc/yum.repos.d/microsoft.repo

[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

【2017/02/08】ちょっと追記

https://packages.microsoft.comについて、自分の環境のChromeだとエラーが出てアクセスできなかったのですが、他のブラウザからだと普通にアクセスできますね...

リポジトリの中を見てみると、現時点で既にPowerShell以外にMicrosoft ODBC Driver for SQL Server on LinuxSQL Server tools on Linuxなどが登録されています。
また、UbuntuやCentOS(RHEL)の他にSUSEのリポジトリがあることも確認できます。

ちなみにCentOS上で取得可能なパッケージの一覧を抽出してみると以下の様になりました。

$ yum list | grep packages-microsoft-com-prod

msodbcsql.x86_64                           13.1.4.0-1                  packages-microsoft-com-prod
mssql-tools.x86_64                         14.0.3.0-1                  packages-microsoft-com-prod
powershell.x86_64                          6.0.0_alpha.15-1.el7.centos packages-microsoft-com-prod
unixODBC-utf16.x86_64                      2.3.1-1                     packages-microsoft-com-prod
unixODBC-utf16-devel.x86_64                2.3.1-1                     packages-microsoft-com-prod

PowerShell以外のソフトウェアについて

PowerShell Blogのコメント欄でも少し触れられていますが、このリポジトリでPowerShell本体以外にOMIPowerShell OMI Provider のインストールも可能にしていく様です。

現時点ではPowerShell OMI Providerに以下のIssueが挙げられています。

github.com

今後他のソフトウェアでもIssueが追加され、リポジトリに随時登録されていくと思われます。

【おまけ】MacOSの場合

Macの場合、公式なリポジトリはありませんが、有志がHomebrew CaskにPowerShellを登録してくれています。

github.com

Homebrewがインストールされていれば以下のコマンドでPowerShellをインストールすることができます。

# Bash
# Homebrew Caskからインストール
brew tap caskroom/cask
brew cask install powershell

*1:多分しなくても大丈夫なはず...

*2:PowerShell Blogの手順では一旦suしていましたがsudoで一気にやっても大丈夫です。

Visual Studio Codeで新規作成したファイルの言語モードを設定する方法

なんとなく試したら上手くいってしまったので。
現在のバージョン(Ver.1.9)では上手くいきましたが、今後新しいバージョンではできなくなるかもしれません...

【2017/04/06追記】Ver.1.11以降の方法

本日更新されたVer.1.11でsettings.jsonに新たにfiles.defaultLanguageというパラメーターが追加されデフォルトの言語を設定できる様になりました。

例えばデフォルトをPowerShellにしたい場合は、

// settings.json
{
    // ※すべて小文字で powershell とすること
    "files.defaultLanguage": "powershell"
}

とすればファイルを新規作成した時点の言語モードがPowerShellになってくれます。
わかりやすい設定が増えてくれて嬉しい限りです。

以降の内容についてはVer.1.11以前のやり方ということで残しておきます。

動機

私はVisual Studio CodeをほぼPowerShellを書くのに使っているため、ファイルを新規作成した時点で言語モードがPowerShellになってくれていると便利なんだけどだなぁというのが動機です。

公式な手順

公式に新規作成したファイルの言語モードを設定する方法はない様で(あれば教えてください)、最初は必ずプレーンテキストになっています。

f:id:stknohg:20170203181741p:plain

この状態から、

  • 右下の言語モードの表示欄をクリック
  • Ctrl + K → M

のどちらかの手順で言語モードを変更する必要があります。

f:id:stknohg:20170203181801p:plain


f:id:stknohg:20170203181807p:plain

新規作成したファイルの言語モードを設定する

都度言語モードを変更するのは面倒だったので、ダメ元でユーザー設定(settings.json)に以下の設定を入れてみたところ、新規作成したファイルの言語モードをPowerShellにすることができてしまいました。

// settings.json
"files.associations": {
    "Untitled-*": "powershell"
}

本来files.associationsは拡張子に応じた言語モードを設定する場所なのですが、ファイル名自体も判定の対象になっている様でUntitled-*の様な設定も許されます。
新規作成した時点のファイル名はUntitled-1,Untitled-2,Untitled-3...といった名称なので、これに合わせた設定にすることで言語モードを変えることができました。

このおかげでファイルを新規作成した時点で直ちにPowerShell拡張の機能(インテリセンスなど)を利用できる様になり、非常に便利になりました。

f:id:stknohg:20170203182229p:plain

Windows Management Framework (WMF) 5.1がリリースされました

長く苦しい戦いだった...

公式のアナウンスは以下。

blogs.msdn.microsoft.com

更新内容について

リリースノートはこちら

WMF 5.1の新機能ついてはこちらかこのブログの以下のエントリを参照してください。

インストール可能OSやインストール方法など

WMF 5.1をインストール可能なOSは以下。

  • Windows 7 SP1 / Windows Server 2008 R2 SP1
  • Windows Server 2012
  • Windows 8.1 / Windows Server 2012 R2

詳細はこちらを、インストール方法はこちら*1を参照してください。

プレビュー版の時は.NET Framework 4.6(+Windows 7/Windows Server 2008 R2の場合はWMF 4.0の事前インストール)が必要でしたが、この条件はリリース版では変更され、.NET Framework 4.5 4.5.2*2のみ必要(Windows 7/Windows Server 2008 R2の場合はWMF 4.0の事前インストール不要)になりました。

【おまけ】Windows 7 SP1にインストールしてみる

せっかくなのでWindows 7 SP1(64bit版)にWMF 5.1をインストールしてみます。

0. はじめに

これまでのWMFはmsuファイルで更新が提供されていましたが、WMF 5.1ではWindows 7 SP1 / Windows Server 2008 R2 SP1に対してはmsuでなくzipファイルで提供されています。
(その他のOSについてはmsuファイルのままです。)

このzipファイルにはmsuファイルに加えInstall-WMF5.1.ps1というスクリプトが同梱されており、このInstall-WMF5.1.ps1を実行することでインストールを行います。  
Install-WMF5.1.ps1ではインストール前に実行環境のチェックを行い次の内容を検証しています。

  • インストール可能なOSであること
  • .NET Framework 4.5以上がインストールされていること
  • WMF 3.0がインストールされていないこと

これらのチェックに失敗するとエラーメッセージとともにインストールが中断されます。

例) .NET Framework 4.5がインストールされていない場合

f:id:stknohg:20170120203112p:plain

1. zipのダウンロード

Win7AndW2K8R2-KB3191566-x64.ZIPをダウンロードして適当なディレクトリに解凍します。
今回はC:\Temp\Win7AndW2K8R2-KB3191566-x64に解凍しました。

f:id:stknohg:20170120202825p:plain

2. Install-WMF5.1.ps1の実行

必要があればスクリプトの実行を可能にしてください。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

f:id:stknohg:20170120202945p:plain

あとはInstall-WMF5.1.ps1を実行するだけです。
実行するとmsuファイルが実行され更新のインストールが開始されます。

.\Install-WMF5.1.ps1

f:id:stknohg:20170120203239p:plain

f:id:stknohg:20170120203250p:plain

f:id:stknohg:20170120203303p:plain

f:id:stknohg:20170120203330p:plain

インストール後に再起動を求められます。

f:id:stknohg:20170120203636p:plain

再起動すればインストール完了です。

f:id:stknohg:20170120205041p:plain

なおPSReadlineは付いていませんので必要でしたらInstall-Moduleでインストールしてください。

Install-Module PSReadline -Scope CurrentUser

3. サイレントインストール

また、Install-WMF5.1.ps1は以下の2つの引数を取ることができサイレントインストールも可能となっています。

  • AcceptEULA : EULAに自動で同意する
  • AllowRestart : 自動で再起動を許可する

実行例)

.\Install-WMF5.1.ps1 -AcceptEULA -AllowRestart

f:id:stknohg:20170120210347p:plain

*1:まだ日本語版は情報が古いので英語版へのリンクを貼っています

*2:.NET Framework 4.5は既にサポート切れのため4.5.2を要求する様にドキュメントなどが差し替えられています。WMF5.1のインストール自体は4.5でも可能です。