DSCResources/xScheduledTask/xScheduledTask.psm1
Import-Module posh-kentico enum Ensure { Absent Present } [DscResource()] class ScheduledTaskResource { [DscProperty(Key)] [string] $Name; [DscProperty()] [string] $AssemblyName; [DscProperty()] [string] $ClassName; [DscProperty()] [string] $TaskData; [DscProperty()] [string] $DisplayName; [DscProperty(Mandatory)] [Ensure] $Ensure; # [DscProperty()] # [CMS.Scheduler.TaskInterval] $Interval; # [DscProperty()] # [CMS.SiteProvider.SiteInfo] $Site; [bool] Test() { $scheduledTask = Get-CMSScheduledTask -Name $this.Name $intervalString = [CMS.Scheduler.SchedulingHelper]::EncodeInterval($this.Interval) $this.site = $scheduledTask | Get-CMSSite if ($null -ne $scheduledTask) { return $this.Ensure -eq "Present" -and $this.AssemblyName -eq $scheduledTask.TaskAssemblyName -and $this.ClassName -eq $scheduledTask.TaskClass -and $this.TaskData -eq $scheduledTask.TaskData -and $this.DisplayName -eq $scheduledTask.TaskDisplayName -and $intervalString -eq $scheduledTask.TaskInterval -and $this.Site.SiteID -eq $scheduledTask.TaskSiteID } else { return $this.Ensure -eq "Absent" } } [void] Set() { if ([string]::IsNullOrEmpty($this.Ensure)) { $this.Ensure = "Present" } $scheduledTask = Get-CMSScheduledTask -Name $this.Name if ($this.Ensure -eq "Present") { if ($null -ne $scheduledTask) { $scheduledTask.TaskAssemblyName = $this.AssemblyName $scheduledTask.TaskClass = $this.ClassName $scheduledTask.TaskData = $this.TaskData $scheduledTask.TaskDisplayName = $this.DisplayName if ($null -ne $this.Site) { $scheduledTask.TaskSiteID = $this.Site.SiteID } $scheduledTask | Set-CMSScheduledTask -Interval $this.Interval } else { if ($null -ne $this.Site) { New-CMSScheduledTask -AssemblyName $this.AssemblyName -Class $this.ClassName -Data $this.TaskData -DisplayName $this.DisplayName -Interval $this.Interval -Site $this.Site } else { New-CMSScheduledTask -AssemblyName $this.AssemblyName -Class $this.ClassName -Data $this.TaskData -DisplayName $this.DisplayName -Interval $this.Interval } } } elseif ($this.Ensure -eq "Absent") { if ($null -ne $scheduledTask) { $scheduledTask | Remove-CMSScheduledTask -Confirm:$false } } } [ScheduledTaskResource] Get() { $scheduledTask = Get-CMSScheduledTask -Name $this.Name if ($null -ne $scheduledTask) { $this.Ensure = "Present" } else { $this.Ensure = "Absent" } $this.AssemblyName = $scheduledTask.TaskAssemblyName $this.ClassName = $scheduledTask.ClassName $this.TaskData = $scheduledTask.TaskData $this.DisplayName = $scheduledTask.TaskDisplayName $this.Interval = $scheduledTask | Get-CMSScheduledTaskInterval $this.Site = $scheduledTask | Get-CMSSite return $this } } |