Public/Set-SDPAnnouncement.ps1
|
function Set-SDPAnnouncement { <# .SYNOPSIS Updates an existing announcement in ServiceDesk Plus. .PARAMETER Id The ID of the announcement to update. .PARAMETER Title New title. .PARAMETER Content New body content. .PARAMETER IsPublic Whether the announcement is publicly visible. .PARAMETER PriorityId ID of the priority level. .PARAMETER FromDate New start date/time. .PARAMETER ToDate New expiry date/time. .EXAMPLE Set-SDPAnnouncement -Id '5' -Title 'Maintenance Rescheduled' #> [CmdletBinding(SupportsShouldProcess)] [OutputType('SDPAnnouncement')] param( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [string]$Id, [Parameter()] [string]$Title, [Parameter()] [string]$Content, [Parameter()] [bool]$IsPublic, [Parameter()] [string]$PriorityId, [Parameter()] [datetime]$FromDate, [Parameter()] [datetime]$ToDate ) process { $body = @{} if ($PSBoundParameters.ContainsKey('Title')) { $body['title'] = $Title } if ($PSBoundParameters.ContainsKey('Content')) { $body['content'] = $Content } if ($PSBoundParameters.ContainsKey('IsPublic')) { $body['is_public'] = $IsPublic } if ($PSBoundParameters.ContainsKey('PriorityId')) { $body['priority'] = @{ id = $PriorityId } } if ($PSBoundParameters.ContainsKey('FromDate')) { $body['from_date'] = @{ value = [DateTimeOffset]::new($FromDate).ToUnixTimeMilliseconds() } } if ($PSBoundParameters.ContainsKey('ToDate')) { $body['to_date'] = @{ value = [DateTimeOffset]::new($ToDate).ToUnixTimeMilliseconds() } } if ($PSCmdlet.ShouldProcess("Announcement $Id", 'Update SDP Announcement')) { $response = Invoke-SDPRestMethod -Endpoint "announcements/$Id" -Method PUT -Body @{ announcement = $body } [SDPAnnouncement]::new($response.announcement) } } } |