Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Manipulate Hyper-V from .NET

Are there any means for a .NET application to create, delete, start, and stop Hyper-V virtual machines?

I would like to create an automated means of starting and stopping (the create & delete are bonus) virtual machines from a C# application. I figured that (atleast) there would be a means of doing this via P/Invoke, but I cannot find anything discussing how to do this.

Any links to some good walkthroughs or documentation would be preferable.

like image 474
Jason Whitehorn Avatar asked Nov 14 '09 23:11

Jason Whitehorn


4 Answers

Much of the Hyper-V automation is through WMI. WMI isn't explicitly a .NET API, but it's pretty easy to work with from .NET.

See Hyper-V WMI API docs and older v1 docs.

like image 135
anelson Avatar answered Sep 17 '22 19:09

anelson


Don't forget to take into consideration that in newest releases of hyper-v, the namespaces have been moved to v2. For example from root\virtualization in Hyper-V 2008, the namespace has changed into root\virtualization\v2 in 2012. (Windows Server version) Check this post for more details.

This helped me a lot in newest versions of Hyper-V

Hope it helps.

like image 42
wazza Avatar answered Sep 21 '22 19:09

wazza


System Center Virtual Machine Manager comes with a very good set of .NET assemblies, which you can freely reference in your app. It also has an excellent Powershell interface for easy scripting.

However, if you're working with raw Hyper-V and not SCVMM, then I don't know. See if you can get your boss to spring for SCVMM.

like image 39
JSBձոգչ Avatar answered Sep 17 '22 19:09

JSBձոգչ


You can do that and much more with this. http://archive.msdn.microsoft.com/ddc It is for hosters but can be easily installed on premise.

like image 45
Ahmed Avatar answered Sep 20 '22 19:09

Ahmed