2010-10-02 71 views
2

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

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

$vBox.Machines 

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

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

其实,我找不到上virtualbox.org COM对象的任何文件。我fiarly使用PowerShell proficent,我花了一些时间探索COM对象与...

$vBox | gm 

我想每一件事我能想到的,但只有收到错误。为什么不直接使用VBoxManage命令行界面 - 我的问题是我怎么使用PowerShell

感谢

回答

7

而不是使用COM对象启动我的虚拟机?

相关命令你的问题是:

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变量来匹配方法签名并调用方法。也许通过一些聪明的反思或者可以做的事情。

+0

我的经验是,在一个PowerShell远程会话中运行'VBoxManage'(通过调用' - Command'或'输入 - PSSession')使用COM接口引擎盖下与virtualbox进行交互。为了解决这个问题,你必须设置另一个远程登录机制,例如SSH,以便“直接”运行VBoxManage。我很想知道我对此有错。 – Dan1701 2016-03-28 00:34:54

3

以下链接包含一篇关于在PowerShell中使用VirtualBox的文章,并且包含一个包含一些漂亮的PowerShell cmdlet的方便模块。

虽然您可以使用命令行,但该命令很长,它不是交互式的,并且您不能轻松解析结果(例如机器列表等)。 这只适用于PowerShell。

链接中的模块包含一个包装对象,所以您不必担心处置COM对象或任何东西。

这里是链接: http://jdhitsolutions.com/blog/scripting/1502/managing-virtualbox-with-powershell/