PowerShell Script to Close Tickets Using a Certain Date
Below is a sample PowerShell script to close tickets using a certain date:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
#Max number of advistories to pull
$global:QueryLimit = 20
function QueryData ($URL, $Header)
{
# Get First Page of results (20 items)
$result = @()
$results = @()
try
{
$result = Invoke-RestMethod ($URL) -Method Get -Headers $Header
$results = $result.results
if ($result.results)
{
$results = $result.results
}
else
{
$results = $result
}
}
catch
{
Write-host ("Error QueryData1 " + $URL + " " + $_.Exception.Message + " " + $_.Exception.ItemName) -ForegroundColor Red
}
#Get the next pages of results, if any
while (![string]::IsNullOrWhiteSpace($result.next))
{
try
{
$result = Invoke-RestMethod $result.next -Method Get -Headers $Header
$results += $result.results
if ($results.count -gt $global:QueryLimit)
{
break;
}
}
catch
{
Write-host ("Error QueryData2 " + $URL + $result.next + " " + $_.Exception.Message + " " + $_.Exception.ItemName) -ForegroundColor Red
return $results
}
}
return $results
}
function PostData ($URL, $Header, $Body)
{
try
{
$result = Invoke-RestMethod $URL -Method Post -Headers $Header -Body $Body
}
catch
{
Write-host ("Error PostData " + $URL + " " + $_.Exception.Message + " " + $_.Exception.ItemName) -ForegroundColor Red
}
}
function ChangeTicketStatuses ($URL, $Header)
{
$Collection = QueryData $URL $Header
foreach ($Ticket in $Collection)
{
[datetime] $TicketDate = $Ticket.created
[datetime] $CompareDate = Get-Date "9/13/2017 12:00 AM"
if ($TicketDate -lt $CompareDate)
{
Write-Host "Changing status of Ticket" $Ticket.id "to 3" -ForegroundColor Red
$Ticket
# Change Status to 3 (Closed)
$Body = '{"priority":null,"queue":null,"assigned_to":null,"comment":null,"ticket":[' + $Ticket.id + '],"status":3}'
PostData ("https://api.app.flexerasoftware.com/api/tickets/edit/") $WebServiceHeader $Body
}
else
{
Write-Host "Leaving Ticket" $Ticket.id "Alone" $Ticket.created -ForegroundColor Green
}
}
}
$WebServiceHeader = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$WebServiceHeader.Add("Content-Type", 'application/json')
$WebServiceHeader.Add("Authorization", "Token YOURTOKENHERE" )
ChangeTicketStatuses "https://api.app.flexerasoftware.com/api/tickets/" $WebServiceHeader