Files
Sandbox/VMware-VMToolsUpgrade.ps1
T
Zack Meier 03dba08135 sync
2026-04-15 15:42:41 -05:00

52 lines
3.2 KiB
PowerShell

<#$servers = (import-csv 'D:\State of North Dakota\-Tm-ITD-Virtualization - Documents\VMware\VMwareTools-Test.csv')
$servers = import-csv C:\users\zmeier\desktop\servers-test.csv
#$VMs = Get-VM | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | where-object Name -eq itdzmtest222
$VMs = Get-VM | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | where-object Name -match $servers
$VMs = [System.Collections.ArrayList]@()
ForEach($server in $servers[101..250]){
#Get-VM -Name asdf | Update-Tools -RunASync -NoReboot
}
$VMs = get-vm $servers.computername
# Record Before Stats and Execute
get-vm $servers.computername | select Name,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}} -ov Before
#$VMs | Update-Tools -NoReboot -RunASync
# Status after
#Get-VM -Name $VMs.ComputerName | select Name,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}} -ov After
Get-VM -Name $servers.computername | Where-Object PowerState -eq PoweredOn | where-object {$_.Guest.ToolsVersion -ne "12.0.0"} | select Name,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}} -ov Left
Get-VM -Name $servers.computername | Where-Object PowerState -eq PoweredOn | where-object {$_.Guest.ToolsVersion -ne "12.0.0"}
#Get-VM -Name $servers.computername | where-object {$_.Guest.ToolsVersion -ne "12.0.0"} | Update-Tools -RunASync
#Get-VM itdernappu01.nd.gov | Update-Tools -RunASync
#>
# 2022/03/20
$After = Get-VM | Where-Object { $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | select Name,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}}
<#$servers = @"
itdernappu01.nd.gov
"@
$servers = ConvertTo-Array -MultiLineString $servers #>
# Reboot VM
<#ForEach($server in $servers){
#Get-VM $server | Where-Object { $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | Restart-VMGuest
}#>
Get-VM $servers | Where-Object { $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | select Name,PowerState,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}},@{n='ToolsState';e={$_.Guest.State}} | sort-object Name -ov Latest
# Install VMware Tools, and reboot
ForEach($server in $servers){
#Get-VM $server | Where-Object { $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" }| Where-Object { $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | Update-Tools -RunAsync
start-sleep -seconds 1
}
Get-VM $servers | Where-Object { $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | select Name,PowerState,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}},@{n='ToolsState';e={$_.Guest.State}} | where-object ToolsVersion -ne "12.0.0" | sort-object Name -ov Left
$Left.count
Get-VM | Where-Object { $_.GuestId -like "*windows*" -and $_.PowerState -eq "PoweredOn" -and $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" } | select Name,PowerState,@{n='ToolsVersion';e={$_.Guest.ToolsVersion}},@{n='ToolsState';e={$_.Guest.State}} | where-object ToolsVersion -ne "12.0.0" | sort-object Name -ov AllLeft
$AllLeft.count