VMware Cloud Community
MariusRoma
Expert
Expert

Creating a scheduled task to shutdown and reboot a VM

I need to chreate a scheduled task to shutdown a given VM at a given time and another one to power on the same VM twenty minutes later.

Is there any sample I can start from?

Regards

marius

0 Kudos
2 Replies
theaaronstrong
Enthusiast
Enthusiast

connect-viserver vcenterName

shutdown-vmguest -vm ServerName

start-sleep -m 20

start-vm -vm ServerName

Put this in a task schedule?

0 Kudos
LucD
Leadership
Leadership

Try something like this

$vmName = 'MyVM'

$time  = Get-Date "23/06/17 18:00"

$si = Get-View ServiceInstance

$scheduledTaskManager = Get-View $si.Content.ScheduledTaskManager

$vm = Get-View -ViewType VirtualMachine -Filter @{"Name"=$vmName}

$spec = New-Object VMware.Vim.ScheduledTaskSpec

$spec.Name = "Shutdown $($vmName)"

$spec.Description = "Shutdown $($vmName)"

$spec.Enabled = $true

$spec.Scheduler = New-Object VMware.Vim.OnceTaskScheduler

$spec.Scheduler.runat = $time

$spec.Action = New-Object VMware.Vim.MethodAction

$spec.Action.Name = "ShutdownGuest"

$scheduledTaskManager.CreateScheduledTask($vm.MoRef, $spec)

$spec = New-Object VMware.Vim.ScheduledTaskSpec

$spec.Name = "Power on $($vmName)"

$spec.Description = "Power on $($vmName)"

$spec.Enabled = $true

$spec.Scheduler = New-Object VMware.Vim.OnceTaskScheduler

$spec.Scheduler.runat = $time.AddMinutes(20)

$spec.Action = New-Object VMware.Vim.MethodAction

$spec.Action.Name = "PowerOnVM_Task"

$scheduledTaskManager.CreateScheduledTask($vm.MoRef, $spec)


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos