{"id":621,"date":"2010-04-09T10:43:40","date_gmt":"2010-04-09T15:43:40","guid":{"rendered":"http:\/\/jdhitsolutions.com\/blog\/2010\/04\/powercli-get-vmtoolsversion\/"},"modified":"2010-04-09T10:43:40","modified_gmt":"2010-04-09T15:43:40","slug":"powercli-get-vmtoolsversion","status":"publish","type":"post","link":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/","title":{"rendered":"PowerCLI Get-VMToolsVersion"},"content":{"rendered":"<p>I recently was able to upgrade my VMware server so that I can now fully use the <a title=\"learn more about PowerCLI\" href=\"http:\/\/communities.vmware.com\/community\/vmtn\/vsphere\/automationtools\/powercli\" target=\"_blank\">PowerCLI<\/a> tool set. This is fantastic PowerShell goodness that I hope to use and write about much more in the future. Part of my upgrade process includes upgrading the VMToools install on the virtual machines. But what wasn\u2019t so easy is to pull out the tools version currently installed. The information is there when using Get-View, but it takes a little bit of work. So naturally I developed my own solution.<\/p>\n<p> <!--more-->  <\/p>\n<p>I wrote a PowerShell 2.0 function that can work in a pipelined expression to return the tools version number.<\/p>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #00008b\">Function<\/span> <span style=\"color: #8a2be2\">Get-VMToolsVersion<\/span> <span style=\"color: #000000\">{<\/span>            \n<span style=\"color: #006400\">#requires -pssnapin VMWare.VimAutomation.Core<\/span>            \n            \n<span style=\"color: #006400\">&lt;#\n.Synopsis\n    Get VMware Tools version for a given virtual machine.\n.Description\n    This function will add the ToolsVersion property to a virtual <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">    machine object. The object is written to the pipeline but because <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">    the default formatted view doesn't know about the property you need <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">    to use Select-Object to display it.\n    \n.Parameter VM\n    A virtual machine object.\n.Example\n    PS C:\\&gt; get-vmtoolsversion (get-vm researchdc) | select ToolsVersion\n    \n    Get the ToolsVersion for the ResearchDC virtual machine\n.Example\n    PS C:\\&gt; get-vm | get-vmtoolsversion | Sort ToolsVersion | <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">      select Name,ToolsVersion, PowerState\n    \n    Presents a summary report of all virtual machines displaying the <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">    virtual machine name, the version of VMware Tools, and its power <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">    state.\n.Example\n    PS C:\\&gt; get-vm | get-vmtoolsversion | where {<\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">      $_.ToolsVersion -lt 8194} | sort ToolsVersion | <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">      select Name,ToolsVersion,PowerState\n    \n    Similar to the previous example except it returns only VMs with <\/span><\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #006400\">    tools version less than 8194. Output is sorted by the version.\n.Inputs\n    Virtual Machine object\n.Outputs\n    A customized Virtual Machine object            \n.Link\n    Get-VM\n    Get-View\n      \n.Notes\n NAME:      Get-VMToolsVersion\n VERSION:   1.0\n AUTHOR:    Jeffery Hicks\n LASTEDIT:  4\/8\/2010\n\n#&gt;<\/span>            \n            \n<span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #add8e6\">cmdletbinding<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #a9a9a9\">]<\/span>            \n            \n<span style=\"color: #00008b\">Param<\/span> <span style=\"color: #000000\">(<\/span>            \n     <span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #add8e6\">Parameter<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">Position<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">,<\/span> <span style=\"color: #000000\">Mandatory<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #ff4500\">$True<\/span><span style=\"color: #a9a9a9\">,<\/span> <span style=\"color: #000000\">ValueFromPipeline<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #ff4500\">$True<\/span><span style=\"color: #a9a9a9\">,<\/span>             \n     <span style=\"color: #000000\">HelpMessage<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #8b0000\">&quot;You must specify a virtual machine object&quot;<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #a9a9a9\">]<\/span>            \n     <span style=\"color: #008080\">[VMWare.VimAutomation.Client20.VirtualMachineImpl[]]<\/span><span style=\"color: #ff4500\">$vm<\/span>            \n    <span style=\"color: #000000\">)<\/span>            \n                \n<span style=\"color: #00008b\">Begin<\/span> <span style=\"color: #000000\">{<\/span>            \n    <span style=\"color: #0000ff\">Write-Verbose<\/span> <span style=\"color: #8b0000\">&quot;Starting function&quot;<\/span>            \n<span style=\"color: #000000\">}<\/span>            \n            \n<span style=\"color: #00008b\">Process<\/span> <span style=\"color: #000000\">{<\/span>            \n    <span style=\"color: #0000ff\">Write-Verbose<\/span> <span style=\"color: #8b0000\">&quot;Getting view for $($vm.name)&quot;<\/span>            \n    <span style=\"color: #ff4500\">$view<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #0000ff\">Get-View<\/span> <span style=\"color: #000080\">-viObject<\/span> <span style=\"color: #ff4500\">$vm<\/span>            \n               \n    <span style=\"color: #ff4500\">$ToolsVersion<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #ff4500\">$view<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Config<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Tools<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ToolsVersion<\/span>            \n    <span style=\"color: #0000ff\">write-verbose<\/span> <span style=\"color: #8b0000\">&quot;Found tools version value of $ToolsVersion&quot;<\/span>            \n    <span style=\"color: #ff4500\">$vm<\/span> <span style=\"color: #a9a9a9\">|<\/span> <span style=\"color: #0000ff\">Add-Member<\/span> <span style=\"color: #000080\">-MemberType<\/span> <span style=\"color: #8a2be2\">NoteProperty<\/span> <span style=\"color: #000080\">-Name<\/span> <span style=\"color: #8b0000\">&quot;ToolsVersion&quot;<\/span> `<\/pre>\n<pre class=\"PowerShellColorizedScript\"><span style=\"color: #000080\">-Value<\/span> <span style=\"color: #ff4500\">$toolsVersion<\/span> <span style=\"color: #000080\">-passthru<\/span>            \n            \n<span style=\"color: #000000\">}<\/span>            \n            \n<span style=\"color: #00008b\">End<\/span> <span style=\"color: #000000\">{<\/span>            \n    <span style=\"color: #0000ff\">Write-Verbose<\/span> <span style=\"color: #8b0000\">&quot;Ending function&quot;<\/span>            \n<span style=\"color: #000000\">}<\/span>            \n            \n<span style=\"color: #000000\">}<\/span> <span style=\"color: #006400\">#end Function<\/span><\/pre>\n<p>The function takes a virtual machine object as a parameter and uses Get-View to retrieve the ToolsVersion property. I could have created a new custom object, but I decided to simply add this as a new property to the virtual machine object using <a title=\"get online help for this cmdlet\" href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkID=113280\" target=\"_blank\">Add-Member<\/a>. Using \u2013passthru means the object is written back to the pipeline. Because the default formatter doesn\u2019t recognize this property, you have to explicitly ask for it. But that\u2019s pretty easy and as you can see very helpful.<\/p>\n<p><font color=\"#0000ff\" size=\"2\" face=\"Consolas\">[vSphere PowerCLI] C:\\Scripts&gt; get-vm | get-vmtoolsversion | sort ToolsVersion |<br \/>\n    <br \/>format-table name,toolsversion -autosize <\/font><\/p>\n<p><font color=\"#0000ff\" size=\"2\" face=\"Consolas\">Name&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ToolsVersion<br \/>\n    <br \/>----&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ------------ <\/p>\n<p>Win2K8R2 Baseline&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 7303 <\/p>\n<p>Win7 Baseline&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 7303 <\/p>\n<p>MyCompany Exchange 2007&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>MyCompany Vista&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>ResearchDC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>Research Member Server R2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>MyCompany Windows 7&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>R2 Core RODC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>R2 Server Core Baseline&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>MyCompany 2008&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8193 <\/p>\n<p>MyCompany XP&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8194 <\/p>\n<p>MyCompanyDC 2K3R2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8194 <\/p>\n<p>MyCompany XP Restored&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8194 <\/p>\n<p>MyCompany2003&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 8194<\/font><\/p>\n<p>The function includes comment based help, but is lacking any sort of robust error handling. I suppose I should add that in. <\/p>\n<p>I\u2019m still learning all the ins and outs of PowerCLI but this meets my needs and maybe it will meet yours.<\/p>\n<div style=\"padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px\" id=\"scid:F60BB8FA-6F02-4999-8F5E-9DD4E92C4DA7:f605fd41-52cd-41ec-a037-73e19058802b\" class=\"wlWriterEditableSmartContent\">\n<div><a href=\"http:\/\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2010\/04\/getvmtoolsversion.txt\" target=\"_blank\">Download get-vmtoolsversion.ps1<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I recently was able to upgrade my VMware server so that I can now fully use the PowerCLI tool set. This is fantastic PowerShell goodness that I hope to use and write about much more in the future. Part of my upgrade process includes upgrading the VMToools install on the virtual machines. But what wasn\u2019t&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[183,75],"tags":[563,534,540,16],"class_list":["post-621","post","type-post","status-publish","format-standard","hentry","category-powercli","category-powershell-v2-0","tag-powercli","tag-powershell","tag-scripting","tag-vmware"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PowerCLI Get-VMToolsVersion &#8226; The Lonely Administrator<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PowerCLI Get-VMToolsVersion &#8226; The Lonely Administrator\" \/>\n<meta property=\"og:description\" content=\"I recently was able to upgrade my VMware server so that I can now fully use the PowerCLI tool set. This is fantastic PowerShell goodness that I hope to use and write about much more in the future. Part of my upgrade process includes upgrading the VMToools install on the virtual machines. But what wasn\u2019t...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/\" \/>\n<meta property=\"og:site_name\" content=\"The Lonely Administrator\" \/>\n<meta property=\"article:published_time\" content=\"2010-04-09T15:43:40+00:00\" \/>\n<meta name=\"author\" content=\"Jeffery Hicks\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:site\" content=\"@JeffHicks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeffery Hicks\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/\"},\"author\":{\"name\":\"Jeffery Hicks\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"headline\":\"PowerCLI Get-VMToolsVersion\",\"datePublished\":\"2010-04-09T15:43:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/\"},\"wordCount\":290,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"keywords\":[\"PowerCLI\",\"PowerShell\",\"Scripting\",\"VMWare\"],\"articleSection\":[\"PowerCLI\",\"PowerShell v2.0\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/\",\"name\":\"PowerCLI Get-VMToolsVersion &#8226; The Lonely Administrator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\"},\"datePublished\":\"2010-04-09T15:43:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/powershell-v2-0\\\/621\\\/powercli-get-vmtoolsversion\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"PowerCLI\",\"item\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/category\\\/powercli\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PowerCLI Get-VMToolsVersion\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/\",\"name\":\"The Lonely Administrator\",\"description\":\"Practical Advice for the Automating IT Pro\",\"publisher\":{\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/jdhitsolutions.com\\\/blog\\\/#\\\/schema\\\/person\\\/d0258030b41f07fd745f4078bdf5b6c9\",\"name\":\"Jeffery Hicks\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\",\"caption\":\"Jeffery Hicks\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PowerCLI Get-VMToolsVersion &#8226; The Lonely Administrator","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/","og_locale":"en_US","og_type":"article","og_title":"PowerCLI Get-VMToolsVersion &#8226; The Lonely Administrator","og_description":"I recently was able to upgrade my VMware server so that I can now fully use the PowerCLI tool set. This is fantastic PowerShell goodness that I hope to use and write about much more in the future. Part of my upgrade process includes upgrading the VMToools install on the virtual machines. But what wasn\u2019t...","og_url":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/","og_site_name":"The Lonely Administrator","article_published_time":"2010-04-09T15:43:40+00:00","author":"Jeffery Hicks","twitter_card":"summary_large_image","twitter_creator":"@JeffHicks","twitter_site":"@JeffHicks","twitter_misc":{"Written by":"Jeffery Hicks","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/#article","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/"},"author":{"name":"Jeffery Hicks","@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"headline":"PowerCLI Get-VMToolsVersion","datePublished":"2010-04-09T15:43:40+00:00","mainEntityOfPage":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/"},"wordCount":290,"commentCount":0,"publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"keywords":["PowerCLI","PowerShell","Scripting","VMWare"],"articleSection":["PowerCLI","PowerShell v2.0"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/","url":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/","name":"PowerCLI Get-VMToolsVersion &#8226; The Lonely Administrator","isPartOf":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#website"},"datePublished":"2010-04-09T15:43:40+00:00","breadcrumb":{"@id":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/621\/powercli-get-vmtoolsversion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"PowerCLI","item":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},{"@type":"ListItem","position":2,"name":"PowerCLI Get-VMToolsVersion"}]},{"@type":"WebSite","@id":"https:\/\/jdhitsolutions.com\/blog\/#website","url":"https:\/\/jdhitsolutions.com\/blog\/","name":"The Lonely Administrator","description":"Practical Advice for the Automating IT Pro","publisher":{"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jdhitsolutions.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/jdhitsolutions.com\/blog\/#\/schema\/person\/d0258030b41f07fd745f4078bdf5b6c9","name":"Jeffery Hicks","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg","caption":"Jeffery Hicks"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/832ae5d438fdcfc1420d720cd1991307927de8a0b12f2342e81c30f773e21098?s=96&d=wavatar&r=pg"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":1247,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1247\/techmentor-orlando-2011-decks-and-demos\/","url_meta":{"origin":621,"position":0},"title":"Techmentor Orlando 2011 Decks and Demos","author":"Jeffery Hicks","date":"March 21, 2011","format":false,"excerpt":"As promised, I have put together the most current versions of my slide decks and demos. A word of caution on the demos: many of them were designed to be used with my Start-Demo function, which essentially steps through the demo file one line at a time. The AD demos\u2026","rel":"","context":"In &quot;Active Directory&quot;","block_context":{"text":"Active Directory","link":"https:\/\/jdhitsolutions.com\/blog\/category\/active-directory\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2011\/03\/TM_2011spring.gif?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":832,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell-v2-0\/832\/powercli-vm-peek\/","url_meta":{"origin":621,"position":1},"title":"PowerCLI VM Peek","author":"Jeffery Hicks","date":"August 17, 2010","format":false,"excerpt":"Now that I believe I've resolved my hardware issues with my VMware server, I'm expecting to use it much more. I'm also continuing my exploration of the PowerCLI tool set which allows me to manage my virtual infrastructure from a Windows PowerShell session. One task that I frequently need is\u2026","rel":"","context":"In &quot;PowerCLI&quot;","block_context":{"text":"PowerCLI","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2605,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/2605\/copy-and-mount-a-cd-with-powercli\/","url_meta":{"origin":621,"position":2},"title":"Copy and Mount a CD with PowerCLI","author":"Jeffery Hicks","date":"November 30, 2012","format":false,"excerpt":"The other day I realized I needed to rebuild my SQL Server 2012 installation which I'm running on a virtual machine running on an ESX box. Given that I have PowerCLI and I like to do things from the command prompt when I can, I decided to mount the SQL\u2026","rel":"","context":"In &quot;PowerCLI&quot;","block_context":{"text":"PowerCLI","link":"https:\/\/jdhitsolutions.com\/blog\/category\/powercli\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/jdhitsolutions.com\/blog\/wp-content\/uploads\/2012\/11\/PowerCLI-150x150.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":699,"url":"https:\/\/jdhitsolutions.com\/blog\/miscellaneous\/699\/vmware-backup-with-powercli-and-veeam\/","url_meta":{"origin":621,"position":3},"title":"VMware Backup with PowerCLI and Veeam","author":"Jeffery Hicks","date":"July 7, 2010","format":false,"excerpt":"My primary backup drive for my virtual machine backup toasted on me so I had to recreate all of my backup jobs. I\u2019ve been using Veeam\u2019s backup product for VMware and it couldn\u2019t be easier to use. I\u2019ve known that it included a set of PowerShell cmdlets but I had\u2026","rel":"","context":"In &quot;Miscellaneous&quot;","block_context":{"text":"Miscellaneous","link":"https:\/\/jdhitsolutions.com\/blog\/category\/miscellaneous\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":4432,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/4432\/vmdk-to-vhdx-pdq\/","url_meta":{"origin":621,"position":4},"title":"VMDK to VHDX PDQ","author":"Jeffery Hicks","date":"June 26, 2015","format":false,"excerpt":"I have a very old VMware ESXi server that has outlived its useful life. The hardware is at least 5 years old and my VMware license has expired. I can still bring up the server and see the virtual machines, but that's about it. I still keep the box so\u2026","rel":"","context":"In &quot;Hyper-V&quot;","block_context":{"text":"Hyper-V","link":"https:\/\/jdhitsolutions.com\/blog\/category\/hyper-v\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1036,"url":"https:\/\/jdhitsolutions.com\/blog\/powershell\/1036\/join-me-in-orlando\/","url_meta":{"origin":621,"position":5},"title":"Join Me in Orlando","author":"Jeffery Hicks","date":"December 30, 2010","format":false,"excerpt":"I will be presenting 3 sessions at Techmentor Orlando 2011. The conference runs March 14-18, 2011 at the Disney Yacht Club. My sessions are all on Wednesday March 16. In addition to all the other fabulous material at the conference I will be presenting the following: PowerShell Scripting Best Practices\u2026","rel":"","context":"In &quot;Active Directory&quot;","block_context":{"text":"Active Directory","link":"https:\/\/jdhitsolutions.com\/blog\/category\/active-directory\/"},"img":{"alt_text":"Disney Yacht Club","src":"https:\/\/i0.wp.com\/techmentorevents.com\/design\/ecg\/techmentorevents\/home\/img\/portal_2011spring.gif?resize=350%2C200","width":350,"height":200},"classes":[]}],"_links":{"self":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/621","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=621"}],"version-history":[{"count":0,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/621\/revisions"}],"wp:attachment":[{"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jdhitsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}