######################################
YOU CAN RUN THESE SCRIPTS MANUALLY OR
RUN THE START UPDATE SECTION AS A
SCHEDULED TASK AND THE FINISH SECTION
AS A SEPARATE TASK.
######################################
### START UPDATE OF VM TEMPLATE ###
#Import the PowerCLI module
Add-PSSnapin VMware.VimAutomation.Core
#Host IP or vCenter Server IP/NAME
$hostIP = '[vCenter Server]'
#Connect to vCenter
Connect-VIServer $hostIP
#VM Templates to Update
$VMTemplates = 'Win7ENTx64','WS2012StdR2'
Foreach($vm in $VMTemplates){
#convert template to VM
Get-Template -Name $vm | Set-Template -ToVM
#Power on VM
Start-VM -VM $vm
}
#Disconnect From vCenter Server
Disconnect-VIServer $hostIP -Confirm:$false
####################################
### FINISH UPDATE OF VM TEMPLATE ###
#Import the PowerCLI module
Add-PSSnapin VMware.VimAutomation.Core
#Host IP or vCenter Server IP/NAME
$hostIP = '[vCenter Server]'
#Connect to vCenter
Connect-VIServer $hostIP
#VM Templates to Update
$VMTemplates = 'Win7ENTx64','WS2012StdR2'
foreach($vm in $VMTemplates){
#check if VM is powered on
$ison = Get-VM -Name $vm
if($ison.PowerState -eq 'PoweredOn'){
#Shutdown VM
Get-VM -Name $vm | Shutdown-VMGuest -Confirm:$false
#Wait for shutdown to complete
Start-Sleep -Seconds 300
#Convert VM back to a Template
$tobeTemplate = Get-VM $vm | Get-View
$tobeTemplate.MarkAsTemplate()
}
}
#Disconnect From vCenter Server
Disconnect-VIServer $hostIP -Confirm:$false
Comments