Wrote this tool when I was setting up my laptop to run Hyper-V. I didn't want to have to open the Hyper-V manager and have a window running all the time, and was planning on using Remote Desktop Client to connect to the VM's so I could map drives and copy/paste in teh VMs. The idea was to have something that sits in the System Tray that allows you to Start, Stop, Save State, and Pause the VMs running on the box.
I did some looking around as I had no idea how to manage Hyper-V programmatically. Luckily, some blogs were around that indicated WMI would be the way to go.
With that, I dug in. The files are attached and feel free to do with them what you want. Zip contains 2 folders. Compiled EXE is in the Hyper-VManager folder. The Visual Studio 2008 project is in the Hyper-VManager_Source folder.
When you launch the app, you will get a UAC prompt. The app needs to run with admin access to get to Hyper-V objects. You get the same prompts opening the Hyper-V MMC. Here's a quick break down of the app and what it does. It currently manages a single machine. You can manage a remote machine by changing the .config file entry. Change \\.\ to \\MachineName\ and you should be good to go (considering you have permissions to the remote machine). You could extend the app to manage multiple machines, but would need to tweak the code to handle building out the appropriate menus. Shouldn't be much code, but considering I'm not going to be using it, decided not to do the work 🙂
When you launch the app, it displays a Hyper-V icon in the System Tray:
Right-click the icon and you get a list of the Virtual Machines on that machine with the current state of the machine. In this case the VM is Running:
Select a machine and you get four options: Start, Stop, Save State, and Pause. These get enabled/disabled depending on the current state. Since the VM is currently running, the option to Start is disabled.
Changing the state of the VM results in a balloon notification to let you know the machine is changing. You get a second notification once the state change has completed. You can change multiple machines, and will get the various balloons for the machines. For example, clicking Save State shows the following notification:
Now that the VM is in a saved state, the menu updates to show the current status and the other menu options are disabled.
Something I found while putting the notification piece together is that if you don't move the mouse or interact with the machine, the initial balloon will not go away after the InitialDuration property value. Thought it was odd, but looks like it's by design as the idea is if you're not interacting with the machine, you may miss the notification, so they display it until you start working on the box again.
That's pretty much it. Good luck!