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!
Cheers,
Ben
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.
Comments
Anonymous
March 06, 2012
is there an easy way to do this on a cluster?Anonymous
March 06, 2012
AQ - 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 Cheers, BenAnonymous
March 06, 2012
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.Anonymous
May 03, 2012
Hi, this get-vm not recognized in my 2008 r2. is there any way for me to list down all the VM integration version?Anonymous
May 03, 2012
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 2012Anonymous
May 03, 2012
Thanks Ben. Do you know where I can find documentation on the cluster migration wizard so I can start reading up on it?Anonymous
July 18, 2013
The comment has been removedAnonymous
August 04, 2013
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 Name IntegrationServicesVersion ---- -------------------------- 0F705244-1B5B-4FE8-92D6-67509F5F004F 2FFC5E4E-697E-4CE9-8053-B96002EC6C8C 45E7A13C-4E6C-4E57-85E8-384716698563 545AB99A-B3C1-41C4-93A2-C3C5BE5060CA 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 FilesmodulesHyperVhyperv.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)]Anonymous
August 05, 2013
Note also: 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 supportamd64 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?Anonymous
August 05, 2013
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 Name IntegrationServicesVersion ---- -------------------------- w2k3svr1 6.2.9200.16384 w2k3svr2 6.2.9200.16384 w2k8svr1 6.2.9200.16433 w2k8svr2 6.2.9200.16433 w2k8svr3 6.2.9200.16433Anonymous
October 25, 2013
The comment has been removedAnonymous
August 30, 2015
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.