public/Get-ZendeskGroup.ps1
function Get-ZendeskGroup { <# .DESCRIPTION Utilized for searching Zendesk group objects via REST API. This function can return multiple values possibly. .PARAMETER ZendeskInstanceName The subdomain value of the Zendesk URL Example : https://{subdomain}.zendesk.com .PARAMETER ZendeskAPIUserName Full username value of the token username. Example : svc_msp@msp.contoso.com/token .PARAMETER ZendeskAPIToken Full REST API token with admin level rights to the Zendesk instance. .PARAMETER ZendeskGroupName The exact name of the zendesk group to search for. .EXAMPLE An example #> [CmdletBinding()] param ( # Zendesk Instance Name [Parameter(Mandatory=$true)] [string] $ZendeskInstanceName, # Zendesk API Token UserName [Parameter(Mandatory=$true)] [string] $ZendeskAPIUserName, # Zendesk API Token [Parameter(Mandatory=$true)] [string] $ZendeskAPIToken, # Zendesk Group Name [Parameter(Mandatory=$true)] [string] $ZendeskGroupName ) process { $authHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($zendeskAPIUserName):$($zendeskAPIToken)"));} $uri = "https://$($zendeskInstanceName).zendesk.com/api/v2/groups.json" try { [array]$request = Invoke-RestMethod -Uri $uri -Method Get -Headers $authHeader -ErrorAction Stop if ($request.count -ge 1) { [array]$groupSearch = $request.groups | Where-Object { $_.name -eq $zendeskGroupName } if ($groupSearch.count -ge 1) { return $groupSearch | Select-Object name, id, url } else { throw "Zendesk group name $($zendeskGroupName) was not found, please ensure the group name input is valid and that it exists in the Zendesk instance!" } } else { throw "No valid groups were returned from Zendesk, please ensure that all inputs to function are valid and try again!" } } catch { throw "$($_)" } } } |