Use Powershell to add virtual machines to Virtual Server

Back to a topic that I know I won't get dinged on.  🙂

I was playing arround with the list of available COM ProgID's by using the command in Jeffrey Snover's blog:

I ran this command to see the available Program ID's:

dir  REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue("")} | out-file progids.txt

After looking through the file I noticed a very interesting ID called VirtualServer.Application.  That sounded promising so I quickly ran the command:

$vs = new-object -com "VirtualServer.Application"

I then ran the command $vs to see what I could see...Well the command turned up a bunch of blank properties.  So I thought I might have to do some more digging so I did a quick Live Search on VirtualServer.Application and came up with two great blog entries for managing Virtual Server with Powershell:

After creating my COM wrapper and setting my security as described in the Virtual PC Guy's blog entries, I tried my $vs command again and low and behold I had some actual properties.

At this point I wanted to see what I could do with that object so I typed the following command:

$vs | get-member

I quickly noticed a method called RegisterVirtualMachines.  That sounded promising.  I often download gigabytes of virtual machines to play with new technology and it is a royal pain to use the Virtual Server Administration Website to register all of those virtual machines.  So I did another Live Search to see what the parameters were for the RegisterVirtualMachines method and found this reference:

As you can see there are only two required parameters, the name of the VMC file and the path to the VMC file like this RegisterVirtualMachines("Testmachine.vmc","c:\vms\")

Now I was getting somewhere!  I went ahead and went for the gold and tried this command:

dir . -include *.vmc -Recurse | foreach-object {$vs.RegisterVirtualMachine($,$_.directoryname)}

Boom!  All of my virtual machine's were now registered inside of Virtual Server! 

As you can see with a little bit of research you can take advantage of any COM progID and in a short amount of time start to use it to solve problems.


Comments (1)

  1. jsnover says:

    Tim – this is exactly the sort of explore/discover/test/solve/communicate loop that we hoped Windows PowerShell would enable.  Thanks for the Post

    Jeffrey Snover [MSFT]

    Windows PowerShell Architect

    Visit the Windows PowerShell Team blog at:

    Visit the Windows PowerShell ScriptCenter at:

    PSMDTAG:TYPE:COM:  virtualServer.Application

    PSMDTAG:FAQ: How do I register all my .VMC files a virtual Machines?

    PSMDTAG:PHILOSOPHY: Great example of the explore/discover/test/solve/communicate loop for registring Virtual Machines.

Skip to main content