Laravel HomesteadをHyper-Vで起動しようとすると、"Exporting an SMB share failed!"となる場合の回避策

**2019/01/06追記**
2019/01/03に記載した回避策は全く見当違いでしたので、記事修正しました。修正はvagrantのmasterにマージされたようなので、近くvagrantのリリースに取り込まれると思われます。

# 筆者の環境

* Windows 10 Pro (1809)
* Vagrant 2.2.2
* PHP 7.2.13
* Vagrant Box laravel/homestead (hyperv, 6.4.0)
* PHP Package laravel/homestead v7.20.0

# 現象

`Homestead.yaml`は、`.\vendor\bin\homestead.bat make`で生成したものから、`provider`を`hyperv`に書き換えたのみ。

`C:\Users\UserName\Documents\your-app` にてvagrantで仮想マシンを起動しようとすると、以下のエラーが出て正常に起動しない。

```
> vagrant up
Bringing machine 'your-app-name' up with 'hyperv' provider...
==> your-app-name: Verifying Hyper-V is enabled...
==> your-app-name: Verifying Hyper-V is accessible...
==> your-app-name: Importing a Hyper-V instance
    your-app-name: Creating and registering the VM...
    your-app-name: Successfully imported VM
    your-app-name: Please choose a switch to attach to your Hyper-V instance.
    your-app-name: If none of these are appropriate, please open the Hyper-V manager
    your-app-name: to create a new virtual switch.
    your-app-name:
    your-app-name: 1) DockerNAT
    your-app-name: 2) Default Switch
    your-app-name:
    your-app-name: What switch would you like to use? 2
    your-app-name: Configuring the VM...
==> your-app-name: Starting the machine...
==> your-app-name: Waiting for the machine to report its IP address...
    your-app-name: Timeout: 120 seconds
    your-app-name: IP: 172.17.186.66
==> your-app-name: Waiting for machine to boot. This may take a few minutes...
    your-app-name: SSH address: 172.17.186.66:22
    your-app-name: SSH username: vagrant
    your-app-name: SSH auth method: private key
    your-app-name:
    your-app-name: Vagrant insecure key detected. Vagrant will automatically replace
    your-app-name: this with a newly generated keypair for better security.
    your-app-name:
    your-app-name: Inserting generated public key within guest...
    your-app-name: Removing insecure key from the guest if it's present...
    your-app-name: Key inserted! Disconnecting and reconnecting using new SSH key...
==> your-app-name: Machine booted and ready!
==> your-app-name: Preparing SMB shared folders...
    your-app-name: You will be asked for the username and password to use for the SMB
    your-app-name: folders shortly. Please use the proper username/password of your
    your-app-name: account.
    your-app-name:
    your-app-name: Username: YourName
    your-app-name: Password (will be hidden):

Vagrant requires administrator access to create SMB shares and
may request access to complete setup of configured shares.
Exporting an SMB share failed! Details about the failure are shown
below. Please inspect the error message and correct any problems.

Host path:

Stderr:

Stdout:


```

# 回避策

[このリンク先の修正内容](https://github.com/hashicorp/vagrant/pull/10487/commits/8d36ba8864f62157019fff8238f50ec2d380ff8a)に従い、`C:\HashiCorp\Vagrant\embedded\gems\2.2.2\gems\vagrant-2.2.2\lib\vagrant\util\powershell.rb` 内の `Base64.urlsafe_encode64` を `Base64.strict_encode64` に置き換える。



```

> vagrant up
Bringing machine 'your-app-name' up with 'hyperv' provider...
==> your-app-name: Verifying Hyper-V is enabled...
==> your-app-name: Verifying Hyper-V is accessible...
==> your-app-name: Importing a Hyper-V instance
    your-app-name: Creating and registering the VM...
    your-app-name: Successfully imported VM
    your-app-name: Please choose a switch to attach to your Hyper-V instance.
    your-app-name: If none of these are appropriate, please open the Hyper-V manager
    your-app-name: to create a new virtual switch.
    your-app-name:
    your-app-name: 1) DockerNAT
    your-app-name: 2) Default Switch
    your-app-name:
    your-app-name: What switch would you like to use? 2
    your-app-name: Configuring the VM...
==> your-app-name: Starting the machine...
==> your-app-name: Waiting for the machine to report its IP address...
    your-app-name: Timeout: 120 seconds
    your-app-name: IP: 172.17.186.77
==> your-app-name: Waiting for machine to boot. This may take a few minutes...
    your-app-name: SSH address: 172.17.186.77:22
    your-app-name: SSH username: vagrant
    your-app-name: SSH auth method: private key
    your-app-name:
    your-app-name: Vagrant insecure key detected. Vagrant will automatically replace
    your-app-name: this with a newly generated keypair for better security.
    your-app-name:
    your-app-name: Inserting generated public key within guest...
    your-app-name: Removing insecure key from the guest if it's present...
    your-app-name: Key inserted! Disconnecting and reconnecting using new SSH key...
==> your-app-name: Machine booted and ready!
==> your-app-name: Preparing SMB shared folders...
    your-app-name: You will be asked for the username and password to use for the SMB
    your-app-name: folders shortly. Please use the proper username/password of your
    your-app-name: account.
    your-app-name:
    your-app-name: Username: YourName
    your-app-name: Password (will be hidden):

Vagrant requires administrator access to create SMB shares and
may request access to complete setup of configured shares.
==> your-app-name: Setting hostname...
==> your-app-name: Mounting SMB shared folders...
    your-app-name: C:/Users/YourName/Documents/your-app => /home/vagrant/code
    your-app-name: C:/Users/YourName/Documents/your-app => /vagrant
(以下略)
```

以上で、正常に起動できました。