【2017/12/27追記】
最新のPowerShell 6.0 RC2での手順を別エントリに記載しました。
インストール手順はこちらのエントリをご覧ください。
割と誰得なエントリです。
PowerShell 6.0のサポートしているプラットフォームにWindows 7があったので実際に試したところ意外とハマったので記録を残しておきます。
インストール方法について
Windows 7向けのPowerShell 6.0(現時点ではAlpha 17)はMSIのインストーラーが提供されています。
公式のインストール手順にはMSIを実行するだけ、Windows 8.1、Windows 2012R2ではVisual Studio 2015 の Visual C++ 再頒布可能パッケージ
も必要だと記載されているだけであり、Windows 7向けには特に注意書きなどは記載されていません...
一抹の不安を感じますがこの手順を信じて進めてみることにします。
Windows 7にPowerShell 6.0をインストールする
今回は32Bit版での手順を紹介します。
64Bit版もやることは同じです。
1. とりあえずMSIをインストールすると...
インストール媒体からOSをインストールした直後の状態でMSIを実行しPowerShell 6.0をインストールすると、インストール自体はできるのですがプログラムを実行すると以下のエラーが出てしまいます。
コンピューターに api-ms-win-crt-runtime-l1-1-0.dll がないため プログラムを開始できません。 この問題を解決するには、プログラムを再インストールしてみてください。
詳細ついては特に説明不要かと思います。
Windows 7でもWindows 8.1、Windows 2012R2同様にVisual Studio 2015 の Visual C++ 再頒布可能パッケージ
が必要となります。
2. SP1のインストール
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ
をインストールするには、Windows 7 SP1である必要があります。
このためSP1が適用されていない環境では先にSP1にする必要があります。
この手順については細かく説明しませんが、Windows UpdateかKB976932を適用してください。
3. Visual Studio 2015 の Visual C++ 再頒布可能パッケージのインストール
SP1を適用したらVisual Studio 2015 の Visual C++ 再頒布可能パッケージをインストールしてください。
インストーラーの指示に従うだけですのでこの手順についても細かく説明はしません。
4. KB2533623 の適用
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ
をインストールした後でPowerShell 6.0を実行すると、今度は以下のエラーが出てしまいました。
Failed to load the dll from [C:\Program Files\PowerShell\6.0.0.17\hostfxr.dll],
HRESULT: 0x80070057 The library hostfxr.dll was found, but loading it from C:\Program Files\PowerShell\6.0.0.17\hostfxr.dll failed
エラーメッセージを見るに.NET Coreの起動に必要な何かが不足していることがわかります。
そこで.NET Coreの利用に必要な事前条件を確認すると、
For Windows 7 and Windows Server 2008 machines only:
Make sure that your Windows installation is up-to-date and includes hotfix KB2533623 installed through Windows Update.
と記載されており、KB2533623を適用する必要があることがわかります。
この更新を適用することで無事PowerShell 6.0を起動することができました。
おまけ
Visual Studio Code PowerShell拡張はPowerShell 3.0以上であれば使えます。
settings.json
のpowershell.developer.powerShellExePath
にPowerShell 6.0のパスを設定することでWindows 7でもPowerShell拡張を使うことが可能です。
// settings.json { "powershell.developer.powerShellExePath": "C:\\Program Files\\PowerShell\\6.0.0.17\\powershell.exe" }
右下のPowerShellのバージョン欄がちゃんと6.0
になっていることがわかります。
最後に
とりあえずこんな感じです。
現時点でWindows 7を扱う環境であれば、大抵の場合SP1および最新の(またはそれに近い)Windows Updateが適用されていると思いますので、本エントリの様にハマることは少ないと思います。
また、Windows 7ではWMF 5.1(PowerShell 5.1)もインストールすることができますので通常はこちらをインストールすることになるでしょう。
もともと本エントリを書こうと思った動機は「何らかの理由でPowerShell 3.0以降をインストールすることができない環境にPowerShell 6.0をサクッとインストールして代替とすることができないか?」だったのですが、現実はそう甘くなかったです。