Public/Publish-FsArticle.ps1
Function Publish-FsArticle { <# .SYNOPSIS Publishes a Solution Article in FreshService .DESCRIPTION The Publish-FsArticle function publishes a draft solution article, changing its status to published .EXAMPLE Publish-FsArticle -ID 1 Publishes the article with ID 1 .EXAMPLE Get-FsArticle -FolderID 2 | Where-Object {$_.status -eq 1} | Publish-FsArticle Publishes all draft articles in folder 2 .PARAMETER ID The ID of the article to publish (required) .INPUTS String .OUTPUTS PSCustomObject .NOTES Requires FreshService API connection Article must be in draft status to be published May require approval workflow completion first .LINK https://api.freshservice.com/v2/#publish_solution_article #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')] Param( [Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, Position=0)] [String]$ID ) Begin { Write-Verbose -Message "Starting $($MyInvocation.InvocationName) with $($PsCmdlet.ParameterSetName) parameterset..." Write-Verbose -Message "Parameters are $($PSBoundParameters | Select-Object -Property *)" Connect-FreshServiceAPI } Process { if ($PSCmdlet.ShouldProcess("Article ID: $ID", "Publish Solution Article")) { $Attributes = @{ 'status' = 2 # Published status } $Body = $Attributes | ConvertTo-Json Write-Verbose -Message "Publishing article ID $ID" Write-Verbose -Message "Request body: $Body" Get-FreshServiceAPIResult -APIEndpoint "$($Script:APIURL)/solutions/articles/$($ID)" -Body $Body -Method 'PUT' } } End { Write-Verbose -Message "Ending $($MyInvocation.InvocationName)..." } } |