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: https://blogs.msdn.com/powershell/archive/2006/06/29/650913.aspx
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:
https://blogs.msdn.com/virtual_pc_guy/archive/2006/06/13/630165.aspx
https://blogs.msdn.com/virtual_pc_guy/archive/2006/06/15/631857.aspx
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: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/msvs/msvs/ivmvirtualserver_createvirtualmachine.asp
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($_.name,$_.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.