如何从 Mac 命令行将脚本传递给 Windows 8 Vagrant 框?

How to pass a script to a Windows 8 Vagrant box from the Mac command line?

我是 运行 Windows 8.1 来宾,在 Mac OSX 10.11 主机上,来自 Vagrant。我想通过命令行将脚本传递给这个来宾。如果来宾是基于 Unix 的,我可以只做 vagrant ssh -c "$THE_SCRIPT" my-unix-box 并收工。当我尝试 Windows 来宾时,我被告知命令 bash 不存在。

但是,我可以 vagrant ssh 进入 Windows 来宾,而无需指定命令就好了。结果 shell 是 cmd 不是 PowerShell 或 Bash 或类似的。

如何通过在命令行中传入来在客户机 Windows Vagrant box(来自 OS X 主机)上执行脚本? Vagrantfile 配置,要安装的来宾软件,或类似的。我对哪个 shell 最终运行我的脚本并不挑剔。

事实证明,您可以使用双破折号分隔将脚本传递给 vagrant,如下所示:

WINDOWS_THINGS="..."

vagrant ssh windowsBox -- "$WINDOWS_THINGS"

在我的例子中,这会将 运行 WINDOWS_THINGS 的内容作为 cmd 脚本。我想使用的解释器取决于底层盒子,但无论如何这解决了我的问题。 IRC 上有人向我推荐了这个,不幸的是我不记得他们的名字了。但是,如果您正在阅读本文,谢谢!