Using PowerShell to check Integration Services versions

I should warn you that I am going to be blogging a *lot* about all the things you can do with PowerShell and Hyper-V in Windows 8.  Because, well, there is a lot that you can do!  As I discussed yesterday – after updating one of my servers to the Windows Server “8” beta I needed to update the integration services inside each virtual machine.

Handily – it is very simple to use PowerShell to keep track of your progress.  Just open a PowerShell window and run:

Get-VM | ft Name, IntegrationServicesVersion

And you will get a handy display like this:


That tells you exactly which virtual machines still need to be updated.  Neat!


Side note: In the post above I say to use “Get-VM”, yet in the screenshot I am using “gvm”.  There is a surprisingly complex reason for this difference.  One of the nice PowerShell features of Windows Server “8” is that you do not need to explicitly import a PowerShell module before using it (i.e. you do not need to run “Import-Module Hyper-V” in order to use a Hyper-V command). Instead, PowerShell will import the module for you the first time you need it.  Unfortunately this “auto-load module logic” only works for commands (like “Get-VM”) and not for aliases (like “gvm”).  So in order to use the gvm alias for get-vm – you first need to either import the Hyper-V module or run a Hyper-V PowerShell cmdlet without using an alias.