Powershell to randomise VSS schedules

By steve, 10 April, 2014

the following powershell can be used to find all VSS scheduled tasks and alter the minutes to a random value.

$TaskService = new-object -comobject "Schedule.Service"
$TaskService.Connect()

$Folder = $TaskService.GetFolder("\")
$Task = $folder.GetTasks(0) | where {$_.Name.StartsWith("ShadowCopyVolume")}

if($Task.GetType().BaseType.Name -eq "Array") {
exit 1
}

$SetMinute=Get-Random -Minimum 1 -Maximum 59
$TaskDef=$Task.Definition

foreach ($Trigger in $TaskDef.Triggers) {
if($Trigger.StartBoundary.EndsWith("00:00")) {
$Trigger.StartBoundary = $Trigger.StartBoundary.Replace("00:00",$SetMinute.ToString() + ":00")
"Setting Start to " + $Trigger.StartBoundary
}
}

$Folder.RegisterTaskDefinition($Task.Name, $TaskDef, 4, $null, $null, $null)

Comments