2010-10-02 20 views
2

J'ai créé une machine virtuelle. Maintenant, j'essaye de le lancer en utilisant Powershell. J'ai cherché partout sur Internet pour tous les détails sur la façon de le faire. C'est le seul code que j'ai trouvé ...VirtualBox + Powershell?

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

$vBox.Machines 

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

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

En fait, je ne peux pas trouver de la documentation sur les objets COM sur virtualbox.org. Je fiarly proficent avec Powershell, j'ai passé quelque temps à explorer l'objet com avec ...

$vBox | gm 

J'ai essayé tout ce que je pouvais penser, mais seulement recevoir des erreurs. Ma question est de savoir comment puis-je lancer ma machine virtuelle en utilisant Powershell

Merci

Répondre

7

Plutôt que d'utiliser les objets COM - pourquoi ne pas simplement utiliser l'interface de ligne de commande VBoxManage?

Les commandes se rapportant à votre question sont:

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

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

L'exécutable VBoxManage se trouve dans le répertoire d'installation, qui seront par défaut C: \ Program Files \ Oralce \ VirtualBox (de la version 3.2.8 au moins). En utilisant l'API COM, il semblerait que la méthode VirtualBox.OpenSession est celle que vous devez utiliser, mais je ne peux pas sembler obtenir PowerShell pour forcer la variable ISession à correspondre à la signature de la méthode et invoquer la méthode. Peut-être que grâce à une réflexion intelligente ou quelque chose, il pourrait être fait pour travailler.

+0

Mon expérience a été que l'exécution 'VBoxManage' au cours d'une session à distance Powershell (soit via' Invoke-commande' ou 'Enter-PSSession') utilise l'interface COM sous le capot interagir avec virtualbox. Pour contourner cela, vous devrez configurer un autre mécanisme de connexion à distance, tel que SSH, afin d'exécuter VBoxManage "directement". J'adorerais savoir que je me trompe à ce sujet. – Dan1701

3

Le lien suivant contient un article sur l'utilisation de VirtualBox dans PowerShell et contient un module pratique qui contient de jolies applets de commande PowerShell.

Alors que vous pouvez utiliser la ligne de commande, la commande est longue, elle n'est pas interactive et vous ne pouvez pas facilement analyser les résultats (par exemple, la liste des machines, etc.). Cela fonctionne uniquement avec PowerShell. Le module dans le lien contient un objet wrapper afin que vous n'ayez pas à vous soucier de la disposition de l'objet COM ou de quoi que ce soit.

Voici le lien: http://jdhitsolutions.com/blog/scripting/1502/managing-virtualbox-with-powershell/