Enthusiast
Enthusiast

Automating Updates of Link Parents

Hi guys,

Is there a script to automate the power ON of VMs -> Run Windows Updates -> Power OFF VMs -> Take Snapshot?

We have vSphere Client version 6.7.0.40000 / Horizon 7.10

kind regards,

Travis

0 Kudos
2 Replies
Leadership
Leadership

0 Kudos
VMware Employee
VMware Employee

Hi Travis_83

You can refer to thread Automation of Windows Updates for Templates  which has detailed powerCLI script to automate the task of updating parent VMs.

Snippet from the thread:

The Tasks involved: Convert template to VM, Power On VM, run Windows Update remotely, reboot VMGuest, shut VM down and finally convert back to template.

What's required on Templates:

Note: This Windows Update Module includes the Get-WUInstall PowerShell command which is the one used to install patches remotely.

Here's what is working for me:

# Connect to vCenter

Connect-VIServer "vCenterServer"

# Convert template to VM

Set-Template -Template W2K12Template -ToVM -Confirm:$false -RunAsync

Start-sleep -s 15

#Start VM - I've seen some converted templates that prompt with the VMQuestion, so adding the command to answer with the default option was my response to it.

Start-VM -VM W2K12Template | Get-VMQuestion | Set-VMQuestion -DefaultOption -Confirm:$false

Start-sleep -s 45

#Create variables for Guest OS credentials - This is needed for the Invoke-VMScript cmdlet to be able to execute actions inside the Guest.

#If you don't want to enter the Guest OS local administrator password as clear text in the script, follow the steps on following link to create a file and store it as an encrypted string: Using PowerShell credentials without being prompted for a password - Stack Overflow

$Username = "administrator"

$OSPwd = cat C:\Scripts\OSPwd.txt | convertto-securestring

$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $OSPwd

#The following is the cmdlet that will invoke the Get-WUInstall inside the GuestVM to install all available Windows updates; optionally results can be exported to a log file to see the patches installed and related results.

Invoke-VMScript -ScriptType PowerShell -ScriptText "Get-WUInstall –WindowsUpdate –AcceptAll –AutoReboot" -VM W2K12Template -GuestCredential $Cred | Out-file -Filepath C:\WUResults.log -Append

Start-sleep -s 45

#Optionally restart VMGuest one more time in case Windows Update requires it and for whatever reason the –AutoReboot switch didn’t complete it.

Restart-VMGuest -VM W2K12Template -Confirm:$false

#On a separate scheduled script or after a desired wait period, Shutdown the server and convert it back to Template.

Shutdown-VMGuest –VM W2K12Template -Confirm:$false –RunAsync

Start-sleep -s 120

Set-VM –VM W2K12Template -ToTemplate -Confirm:$false

Please mark the reply as helpful/answered if this helps you.

0 Kudos