Reply to Message

View discussion in a popup

Replying to:
Zsoldier
Expert
Expert

Don't feel bad, this one was a hard one to figure out.

function Get-vCenterScheduledTask{

   <#

   .SYNOPSIS

  Retrieve vCenter Scheduled Tasks.

   .DESCRIPTION

  Retrieve vCenter Scheduled Tasks.

   .NOTES

  Source: Automating vSphere Administration

  Authors: Luc Dekens, Arnim van Lieshout, Jonathan Medd,

  Alan Renouf, Glenn Sizemore

    .EXAMPLE

  Get-vCenterScheduledTask | Select-Object Name,Description,NextRunTime,PrevRunTime,State,Notification

  #>

   $si = Get-View ServiceInstance

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

   $tasks = $scheduledTaskManager.RetrieveEntityScheduledTask($null)

   $scheduledtasks = foreach ($task in $tasks){(Get-View $task).info}

   $scheduledtasks

}

In your particular case, you can pull for specific VM by using the the "RetrieveObjectScheduledTask" Method like so:

$si = Get-View ServiceInstance

$scheduledTaskManager = Get-view $si.content.ScheduledTaskManager

$tasksforVM = $scheduledTaskManager.RetrieveObjectScheduledTask($vm.extensiondata.moref)

$scheduledtasksforVM = foreach ($task in $tasksforVM){(get-view $task).info}

$scheduledtasksforVM

Example to reconfigure an existing scheduled task:

vmsch = Get-vCenterScheduledTask | where {$_.Name -match "something completely idiotic so nothing bad happens by running this without knowing what they are doing"}

Foreach ($task in $vmsch)

{

$spec = New-Object VMware.Vim.ScheduledTaskSpec

$spec.name = $task.name

$spec.description = $task.description

$spec.enabled = $true

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

$spec.scheduler.runAt = $task.scheduler.runAt

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

$spec.action.name = "CreateSnapshot_Task"

$spec.action.argument = New-Object VMware.Vim.MethodActionArgument[] (4)

$spec.action.argument[0] = New-Object VMware.Vim.MethodActionArgument

$spec.action.argument[0].value = ""

$spec.action.argument[1] = New-Object VMware.Vim.MethodActionArgument

$spec.action.argument[1].value = ""

$spec.action.argument[2] = New-Object VMware.Vim.MethodActionArgument

$spec.action.argument[2].value = $true

$spec.action.argument[3] = New-Object VMware.Vim.MethodActionArgument

$spec.action.argument[3].value = $false

$spec.notification = ""


$_this = Get-View -Id $task.ScheduledTask

$_this.ReconfigureScheduledTask($spec)

}

Chris Nakagaki (中垣浩一)
Blog: https://tech.zsoldier.com
Twitter: @zsoldier

View solution in original post