33 lines
1.6 KiB
PowerShell
33 lines
1.6 KiB
PowerShell
# Get Tools Upgrade option
|
|
$AllVMs = Get-VM | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" -and $_.ExtensionData.Guest.GuestId -like "windows*" }
|
|
$AllVMsWindows = $AllVMs | Where-Object {$_.Guest.OSFullName -like "*Windows*"}
|
|
$Result = [System.Collections.ArrayList]@()
|
|
Foreach($VM in $AllVMsWindows){
|
|
$obj=[PSCustomObject]@{
|
|
Name = $VM.Name;
|
|
ToolsVersion = $VM.ExtensionData.Config.Tools.ToolsVersion;
|
|
ToolsUpgradePolicy = $VM.ExtensionData.Config.Tools.ToolsUpgradePolicy
|
|
}
|
|
$null = $Result.Add($obj)
|
|
}
|
|
$Result
|
|
|
|
# set all Windows VMs to manual VMware Tools upgrade
|
|
$VMs = Get-VM | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" -and $_.ExtensionData.Guest.GuestId -like "windows*"}
|
|
Foreach ($v in $VMs) {
|
|
$vm = $v | Get-View
|
|
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
|
|
$vmConfigSpec.Tools = New-Object VMware.Vim.ToolsConfigInfo
|
|
$vmConfigSpec.Tools.ToolsUpgradePolicy = "manual"
|
|
$vm.ReconfigVM($vmConfigSpec)
|
|
}
|
|
|
|
# set all VMs to upgradeAtPowerCycle VMware Tools
|
|
$VMs = Get-VM | Where-Object { $_.ExtensionData.summary.config.ManagedBy.Type -ne "placeholderVm" -and $_.ExtensionData.Guest.GuestId -like "windows*" -and $_.ExtensionData.config.tools.ToolsUpgradePolicy -ne "UpgradeAtPowerCycle"}
|
|
Foreach ($v in $VMs) {
|
|
$vm = $v | Get-View
|
|
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
|
|
$vmConfigSpec.Tools = New-Object VMware.Vim.ToolsConfigInfo
|
|
$vmConfigSpec.Tools.ToolsUpgradePolicy = "UpgradeAtPowerCycle"
|
|
$vm.ReconfigVM($vmConfigSpec)
|
|
} |