Public/Update-VMTools.ps1
Function Update-VMTools { <# .SYNOPSIS -Taylor Lee Modified 06132019 .DESCRIPTION Filter out 2003 servers and upgrade VMwaretools on all servers that are not up to date. Does not reboot the VM's. .EXAMPLE Upgrades only tools that are installed an require it. Specify a path for a log file. Update-VMTools .EXAMPLE Specify a path for a log file and include unmanaged VM's. Update-VMTools -Unmanaged .NOTES Requires the VMware.PowerCLI Module #> [CmdletBinding(SupportsShouldProcess)] Param ( [Parameter(Mandatory = $false)][switch]$Unmanaged ) #Set Error Action to ignor errors $ErrorActionPreference = 'SilentlyContinue' #Filter Out 2003 Servers $No2003VMs = Get-VM | Where-Object { $_.Guest -notlike '*2003*' } #Disclaimer Write-Host "Some VMs will fail to upgrade. Use Get-VMTools to see which VM's fail" -ForegroundColor Yellow Write-Host " " if ($Unmanaged) { #Get VM's that require tools upgrades $OutofDateVMs = Get-VM $No2003VMs | ForEach-Object { Get-View $_.id } | Where-Object { $_.Guest.ToolsVersionStatus -like 'guestToolsNeedUpgrade' -or $_.Guest.ToolsVersionStatus -like 'guestToolsNotInstalled' } | Select-Object name, @{Name = 'ToolsVersion'; Expression = { $_.config.tools.toolsversion } }, @{Name = 'ToolStatus'; Expression = { $_.Guest.ToolsVersionStatus } } #Update Tools with no Reboot ForEach ($VM in $OutOfDateVMs) { Write-Host "Upgrading VMWareTools On: " -ForegroundColor Yellow -NoNewline Write-Host $VM.name -ForegroundColor Cyan Update-Tools -NoReboot -VM $VM.Name } } else { #Get VM's that require tools upgrades and filter unmanaged VM's $OutofDateVMs = Get-VM $No2003VMs | ForEach-Object { Get-View $_.id } | Where-Object { $_.Guest.ToolsVersionStatus -like 'guestToolsNeedUpgrade' } | Select-Object name, @{Name = 'ToolsVersion'; Expression = { $_.config.tools.toolsversion } }, @{Name = 'ToolStatus'; Expression = { $_.Guest.ToolsVersionStatus } } #Update Tools with no Reboot ForEach ($VM in $OutOfDateVMs) { Write-Host "Upgrading VMWareTools On: " -ForegroundColor Yellow -NoNewline Write-Host $VM.name -ForegroundColor Cyan Update-Tools -NoReboot -VM $VM.Name } } } |