■ はじめに
Windows 7 で VitualBox 5.1.x と Vagrant 1.9.6 の組み合わせを利用していましたが、 Vagrant 2.0.1 で VirtualBox 5.2 に対応したとのことなので、両方ともアップデートしました。
Vagrant CHANGELOG.md 2.0.1 (November 2, 2017)
providers/virtualbox: Virtualbox 5.2 support [GH-8955]
すると、正常に vagrant up
出来なくなってしまいました。詳細は次の通り。
(結論としては、 PowerShell を 2 から 5.x にアップグレードしたら解消)
■ 遭遇した現象とログ
新規に Vagrantfile を作成して vagrant up
を実行したところ、何も出力されれず、進みませんでした。
そこで、デバッグログ出力もつけて vagrant up --debug
を実行したとろろ、以下のログの箇所で止まっていました。
DEBUG push: finalizing INFO subprocess: Starting process: ["C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\/powershell.EXE", "-NoLogo", "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-Command", "$PSVersionTable.PSVersion.Major"] INFO subprocess: Command not in installer, restoring original environment... DEBUG subprocess: Selecting on IO DEBUG subprocess: stdout: 2
なお、VirtualBox 5.1.x/Vagrant 1.9.6 に 作成済み( .vagrant
フォルダ生成済み)の環境は、VirtualBox 5.2/Vagrant 2.0.1 でも vagrant up
できました。
今回の現象は新規の Vagrantfile という条件のようです。
■ 原因
どうも Vagrant 1.9.7 から PowerShell 5.x が必要のようです。 (Windows 7 デフォルトの PowerShell 2ではなく)
■ 対処
WMF5.1 をインストールして、PowerShell を 5.1 にアップデートします。少し時間がかかります。
WMF 5.1 のインストールと構成 | Microsoft Docs
ダウンロード対象: Win7AndW2K8R2-KB3191566-x64.ZIP
インストール方法は、上記ページに「Windows Server 2008 R2 および Windows 7 で WMF 5.1 をインストールする」に記載されている通り、
ZIP ファイルを展開した後、管理者として PowerShell を開いて
から
Install-Wmf5.1.ps1 スクリプトを実行
します。
インストール後、OS再起動を要求されますので再起動します。
■ 確認
DOSプロンプトで powershell $PSVersionTable
を実行して、 PSVersion
が 5.1
から始まっているいることを確認します。
実行例
C:\> powershell $PSVersionTable Name Value ---- ----- PSVersion 5.1.14409.1012 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14409.1012 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
これで正常に vagrant up
できるようになりました。
■ まとめ
調べたり試したりした限り、以下の組み合わせなら大丈夫のようです。
・VirtualBox 5.1.x、Vagrant 1.9.6、PowerShell 2.0 以上 ・VirtualBox 5.1.x、Vagrant 1.9.7、PowerShell 5 以上 ・VirtualBox 5.2.x、Vagrant 2.0.1 以上、PowerShell 5以上