About three months ago I decided to go on a deep technology dive, exploring a facet of some technology with PowerShell and seeing what made it tick. Typically these sorts of things take anywhere from a few days to a few weeks to work out the details and the end result is some useful scripts that I then blog about and try to leverage with a PowerPack or two. Well this time I ended up going a little deeper than I have in the past, and I decided to go silent on my blog while I worked out the PowerShell scripts behind this huge project. Today I’m happy to end that silence by sharing with you the largest PowerPack that has been published to date!
As of today, PowerGUI users can download a free Hyper-V PowerPack for PowerGUI! This PowerPack has been a huge undertaking, to put it mildly, and I’m absolutely thrilled with the end result (and so happy that I’ve finally finished the first version…whew)! Here’s a list of some of the key features that this PowerPack provides:
- Bulk management of multiple VMs, Virtual Networks, Virtual Hard Drives, Snapshots, etc. within one Hyper-V servers and across multiple Hyper-V servers.
- Support for remote management of Hyper-V servers using alternate credentials.
- Integrated management of standard Windows features like Processes, Services, Event Logs, etc.
- Automatic credential caching (in memory, not to disk) allowing you to enter a password for a Hyper-V server you are managing only once per PowerGUI session.
- Discovery of Hyper-V servers through Active Directory.
- Over 30 rich user-defined functions that wrap the Hyper-V WMI interfaces and provide a cmdlet-like experience when scripting with Hyper-V while outputting rich, custom objects complete with properties and methods to script to your heart’s content. Many of these functions support CSV input through Import-Csv, so there are a lot of opportunities for provisioning already available.
- 101 links and actions allowing you to manage just about everything you would want to manage in Hyper-V, including configuration of security via AzMan Scopes, Snapshot refresh, and many, many more.
In terms of Hyper-V functionality, the PowerPack is pretty comprehensive at this point. There are some features that I have support for in functions that I just didn’t have time to put into the PowerPack at the end of this cycle. There are also quite a few features in the PowerPack that aren’t available in the Hyper-V Manager. But that just means there are opportunities for new features to be added in later versions of this PowerPack. Let me know what features are the most important to you so that I can help you meet your Hyper-V management/scripting needs.
To give you an idea of what it took to make this PowerPack, the main script that contains the function library I’m using in this PowerPack is over 9500 lines long (if you’re new to PowerShell, that’s a heck of a lot of code in a language that lets you do so much with very, very short scripts)! This huge script, and the scripts powering the links and actions, plus the rest of the PowerShell script behind the PowerGUI PowerPacks are all visible to the end user. If you’re trying to figure out how to do something with Hyper-V via WMI and you can’t find the answer, take a look at the functions I have and see if they are already doing what you want to do. Then you can use the functions or try to copy out the code that you need and go from there!
Just a quick note to get you started, once you download and import the PowerPack into PowerGUI, expand the Hyper-V node and then click on Managed Hyper-V Servers. That will expose the Add Connection functionality you need to use to add your first connection to a Hyper-V server. Once you’ve done that, you’ll be able to use the rest of the functionality against that server.
If you have any feedback for this PowerPack (or any others), feel free to leave a note on my blog or on the PowerGUI discussion forums. We’ll be sure to try and help you meet your needs any way that we can!
So what are you waiting for? Go to the Hyper-V PowerPack site and download the PowerPack today!