VirtualBox + Powershell?

3

我创建了一个虚拟机。现在,我正在尝试使用Powershell启动它。我在互联网上搜索了所有关于如何做到这一点的细节。这是我找到的唯一代码...

#----------------------
$vBox = New-Object -ComObject VirtualBox.VirtualBox
$vBox | Get-Member *

$vBox.Machines

$vBox.CreateMachine()
#----------------------

(来源:http://www.ravichaganti.com/blog/?p=1275)

实际上,在virtualbox.org上我找不到任何有关com对象的文档。我相当熟练于powershell,花了一些时间探索com对象...

$vBox | gm

我尝试了所有我能想到的方法,但只收到错误信息。 我的问题是如何使用Powershell启动虚拟机。

谢谢

2个回答

9

不要使用COM对象,为什么不直接使用VBoxManage命令行界面呢?

与您的问题相关的命令如下:

VBoxManage createvm     --name <name>
                        [--ostype <ostype>]
                        [--register]
                        [--basefolder <path> | --settingsfile <path>]
                        [--uuid <uuid>]

VBoxManage startvm      <uuid>|<name>
                        [--type gui|sdl|vrdp|headless]

VBoxManage可执行文件位于安装目录中,默认情况下将位于C:\Program Files\Oralce\VirtualBox(至少在版本3.2.8中)。

使用COM API,似乎VirtualBox.OpenSession方法是您需要使用的方法,但我似乎无法让PowerShell强制ISession变量与方法签名匹配并调用该方法。也许通过一些巧妙的反射或其他方式可以使其工作。


我的经验是,在powershell远程会话中运行VBoxManage(无论是通过Invoke-Command还是Enter-PSSession)都会在幕后使用COM接口与virtualbox交互。为了避免这种情况,您需要设置另一种远程登录机制,例如SSH,以便直接运行VBoxManage。不过,我很想知道我是否对此有所错误。 - Dan1701

3
以下链接包含一篇关于如何在PowerShell中使用VirtualBox的文章,并包含一些不错的PowerShell cmdlets,非常实用。
虽然你可以使用命令行,但是命令很长,不够交互式,也无法轻松解析结果(例如机器列表等)。而这个方法只需要使用PowerShell就能完成。
该链接中的模块包含一个包装对象,因此您不必担心处理COM对象或其他任何事情。
以下是链接: http://jdhitsolutions.com/blog/scripting/1502/managing-virtualbox-with-powershell/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接