未将Vagrant设置脚本复制到主机位置

未将Vagrant设置脚本复制到主机位置,vagrant,vagrantfile,Vagrant,Vagrantfile,主机:Windows7 嘉宾:Windows8 我有一个简单的Vagrant文件,它运行powershell脚本来配置来宾。当我打包这个框时,我看到文件被添加了,但是当我运行vagrant up时,我得到了错误shell provisioner:*主机系统上不存在shell provisioner的路径:D:/VirtualMachines/test/provision.ps1 我验证了provision.ps1存在于include目录下的流浪者框位置 那么为什么当我运行vagrant up时,

主机:Windows7

嘉宾:Windows8

我有一个简单的Vagrant文件,它运行powershell脚本来配置来宾。当我打包这个框时,我看到文件被添加了,但是当我运行
vagrant up
时,我得到了错误
shell provisioner:*主机系统上不存在shell provisioner的路径:D:/VirtualMachines/test/provision.ps1

我验证了
provision.ps1
存在于
include
目录下的流浪者框位置

那么为什么当我运行
vagrant up
时,
provision.ps1
没有被复制到它需要的位置呢

流浪者档案:

VAGRANTFILE_API_VERSION = "2"
modified_name = ENV["COMPUTERNAME"][0..12]
comp_name = modified_name + "TA"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "base"
  config.vm.hostname = comp_name
  config.vm.communicator = "winrm"
  config.vm.network "forwarded_port", host: 3389, guest: 3389, auto_correct: true 
  config.vm.provision "shell", path: "provision.ps1"
end
当时的答案对我有帮助

以下是我如何让它工作的:

  config.vm.provision "shell" do |s|
    p = File.expand_path("../", __FILE__)
    s.path = p + "\\provision.ps1"
  end 

我在Windows 8主机上的Vagrant 1.8.1也有同样的问题。读完后,我将bootstrap.sh重命名为bootstrp.sh,然后再试一次,结果成功了。将bootstrp.sh重命名为bootstrap.sh后,它仍然有效


我想在我的例子中,文件名中有一些奇怪的不可见字符。

假设
路径
是相对于
Vagrantfile
的位置。我还没有创建自己的框,因此可能已关闭,但您可以尝试将该文件直接放置在与
Vagrantfile
相同的位置,以查看是否已拾取该文件。当我手动添加该文件时,确实会拾取该文件,但这不符合目的。当我执行
vagrant-box-add[my-box]
时,它会打包我的box并将powershell脚本添加到以下位置的框中:
D:\VirtualMachines\vagrant\box\TestAgent\0\virtualbox\include
我的假设是,当我在另一个目录中运行
vagrant-up
时(
D:\VirtualMachines\test\
)它应该将配置文件复制到此新位置,以便可以运行。我的假设错了吗?弄明白了,看下面我的答案。