Hyper-V Program Manager
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.
is there an easy way to do this on a cluster?
That was going to be a future blog post! Yes, we have integrated with cluster cmdlets too - so in a cluster you would run:
Get-ClusterGroup | Get-VM | ft Name, IntegrationServicesVersion
Ben, to follow up on the cluster talk, will you be able to add a Server 8 machine to an existing 2008 R2 cluster? I'm thinking that the easiest way to upgrade my cluster hosts would be to pull them out one at a time, upgrade them and then add them back into the cluster.
Hi, this get-vm not recognized in my 2008 r2. is there any way for me to list down all the VM integration version?
Josh - no, this is not possible. But there is a cluster migration wizard that will make the process of upgrading a cluster easier.
Raymond - these PowerShell cmdlets are only supported for Windows 8 / Windows Server 2012
Thanks Ben. Do you know where I can find documentation on the cluster migration wizard so I can start reading up on it?
I run the above cmdlet and pipe, and I get a list of VMs on the host, and a blank column for IntergrationServicesVersion. Am I missing something?
Here it is AUGUST 2013, and "thek16"'s question/comment has NOT been answered, and I am having the same issue.
What gives? I get the SID, instead of vm name, and I get BLANK (nothing) under the IntegrationServicesVersion.
(Yes, yes, I know - start another thread - okay, maybe I'll do that)
I have to say, I am seeing a *LOT* of inconsistency in Microsoft's Hyper-V (this being one example). It would seem simple enough to "get version" and obtain the Integration Services version and, YES, integration services are installed in my VMs (just upgraded 2 of them over the past few hours - AND restarted the VM Manager service)
Here's my results of my query:
PS>Get-Vm | ft Name, IntegrationServicesVersion
I am vaguely recalling there is some 'path' or other change that we were required to make, in order to make the Hyper-V Library thing ("import-module "C:\Program Files\modules\HyperV\hyperv.psd1") load the cmdlets for doing shutdown/import/export - and that path was required to be pointed to the "powershell 1.0" area. Could that be any part of this issue? Shouldn't Server 2012 be using Powershell 3.0? Why would we have to change any path or pointers to reference 'older' 1.0 stuff?
Thanks for any info (I will try technet as well, because this would seem to be a common issu/problem).
[FYI, I am on Server 2012 Datacenter, no SPs (since none seem to be available yet)]
When you do the "insert Hyper-V Integration Services disk," it DEFAULTS to the 32-bit exe! This is WRONG! It should determine WHICH O/S you are inserting the desk for, and the go from there - but that's too much to ask, so for any particularr 64-bit guest (2008 64-bit, 2008 R2 or 2012), just navigate to support\amd64 and run the "setup.exe." When I do that, I get "A previous version of ...detected .. version 6.1.7601, 17514, click OK to upgrade.
So, I upgrade but, again, if this "cmdlet" to show the version is NOT working, what other ways are available to determine the Integration Services version? Anybody? Bueller? Bueller?
I figured it out! If I exit Powershell and the go back into Powershell, then I can show integration services. Weird.
PS C:\> get-vm | ft Name, IntegrationServicesVersion
will result on an windows 2012 R2 into an error , the result you later on get is the Info on that particular node .
The Info is only the VMs which are in the Cluster and on that particular Node.
So for example , any VM you setting up on the Hyper-V Host and which is not in the Cluster will not shown ...
Is that by design ?
If you execute get-ClusterGroup * | ft name that will work, but it seems that the "info" IntegrationServicesVersion is not included in that cmdlet ?
Hi Microsoft, This is August 2015 calling and i ran into the same problems then TNJMAN a few Posts above mine. Hyper-V on W2008 R2, Virtual Machines are 2003, 2008R2 and 2012 R2 and still no result from:
get-vm | ft Name, IntegrationServicesVersion
Please update this Articel and make it fit for 2015. Especially the whole 32, 64 Bit and Powershellversion chaos that you made over the years.