Creating and Connecting a Virtual Network with VBScript

Okay - so this week I have a little VBScript to create and connect a virtual network under Virtual Server.  This script asks for the name of the new virtual network, then asks the user to select a physical network adapter to connect the virtual network to, and finally creates and configures the virtual network.

 Option Explicit 
  
 dim vs, newVNetName, counter, hostNics, hostNic, hostNicNumber, newVNet
  
 'Connect to Virtual Server
 Set vs = CreateObject("VirtualServer.Application")
  
 'Get name for new virtual network
 wscript.echo "Please enter the name of the new virtual network to create:"
 newVNetName = wscript.StdIn.ReadLine
 wscript.echo 
  
 'Display list of network adapters on the host
 wscript.echo "Available physical network adapters:"
 wscript.echo "===================================="
  
 hostNics = vs.HostInfo.NetworkAdapters
 counter = 0
  
 for each hostNic in hostNics
    wscript.echo cstr(counter) + ": " + hostNic
    counter = counter + 1
 next
  
 wscript.echo cstr(counter) + ": No host connection"
 wscript.echo 
  
 'Get a physical network adapter
 wscript.echo "Please enter the number for the physical network adapter to use:"
 hostNicNumber = wscript.StdIn.ReadLine
 wscript.echo 
  
 'Check for valid input
 if (cint(hostNicNumber) < 0) or (cint(hostNicNumber) > counter) then
    wscript.echo "Invalid number specified"
    wscript.quit
 end if
  
 'Create new virtual network in default location
 set newVNet = vs.CreateVirtualNetwork(newVNetName, vs.DefaultVNConfigurationPath)
  
 'Connect new virtual network if appropriate
 if cint(hostNicNumber) < counter then
    newVNet.HostAdapter = hostNics(hostNicNumber)
 end if
  
 wscript.echo "A new virtual network has been created"

A couple of interesting things to notice about this script:

  • When attaching a virtual network to a physical network adapter, you need to be able to provide the identification string for the network card.  This is a bit annoying, but you can get this information from vs.HostInfo.NetworkAdapters (which returns a collection of strings).  If you want you can also just use vs.HostInfo.NetworkAdapters(0) to connect to the first physical network adapter in the computer (yes, the collection is 0 indexed). 
  • You can't specify anything when creating a virtual network, so you need to configure the virtual network after creating it.
  • When creating a new virtual network you need to specify the path for the new virtual network.  This is kind of odd - as all virtual networks are created in the same location, and there is no way for you to change this default location - but you can grab this path from vs.DefaultVNConfigurationPath

Cheers,
Ben