Public/New-FsAgent.ps1
Function New-FsAgent { <# .SYNOPSIS Creates an agent within FreshService .DESCRIPTION The New-FsAgent function inputs a new agent into the FreshService domain *REQUIRED PARAMS* - FirstName, Email, Roles .EXAMPLE New-FsAgent -FirstName 'John' -Email 'john.doe@contoso.com' . . . .PARAMETER .INPUTS .OUTPUTS .NOTES .LINK #> [CmdletBinding()] #Enable all the default paramters, including Param( [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)] [String]$FirstName, [Parameter(Mandatory=$false, Position=1)] [String]$LastName, [Parameter(Mandatory=$false, Position=2)] [String]$JobTitle, [Parameter(Mandatory=$false, Position=3)] [Int[]]$DeptIDs, [Parameter(Mandatory=$true, Position=4)] [String]$Email, [Parameter(Mandatory=$false, Position=6)] [Boolean]$SeeAssociatedTickets, [Parameter(Mandatory=$false, Position=7)] [Hashtable]$CustomFields, [Parameter(Mandatory=$false, Position=8)] [String]$TimeFormat, [Parameter(Mandatory=$false, Position=10)] [String]$TimeZone, [Parameter(Mandatory=$false, Position=11)] [Boolean]$Occasional, [Parameter(Mandatory=$true, Position=12)] [Hashtable[]]$Roles, [Parameter(Mandatory=$false, Position=13)] [String]$Signature, [Parameter(Mandatory=$false, Position=14)] [Int[]]$GroupIDs, [Parameter(Mandatory=$false, Position=15)] [Int[]]$MemeberOf, [Parameter(Mandatory=$false, Position=16)] [Int[]]$ObserverOf ) Begin{ Write-Verbose -Message "Starting $($MyInvocation.InvocationName) with $($PsCmdlet.ParameterSetName) parameterset..." Write-Verbose -Message "Parameters are $($PSBoundParameters | Select-Object -Property *)" Connect-FreshServiceAPI if (!($TimeFormat)) { $TimeFormat = '12h' } if (!($TimeZone)) { $TimeZone = 'Pacific Time (US & Canada)' } } Process{ $Attributes = @{} if ($FirstName){ $Attributes.Add('first_name', $($FirstName)) } if ($LastName){ $Attributes.Add('last_name', $($LastName)) } if ($JobTitle){ $Attributes.Add('job_title', $($JobTitle)) } if ($Email){ $Attributes.Add('email', $($Email)) } if ($DeptIDs){ $Attributes.Add('department_ids', $($DeptIDs)) } if ($SeeAssociatedTickets){ $Attributes.Add('can_see_all_tickets_from_associated_departments', $($SeeAssociatedTickets)) } if ($CustomFields){ $Attributes.Add('custom_fields', $($CustomFields)) } if ($TimeFormat){ $Attributes.Add('time_format', $($TimeFormat)) } if ($TimeZone){ $Attributes.Add('time_zone', $($TimeZone)) } if ($Occasional){ $Attributes.Add('occasional', $($Occasional)) } if ($Roles){ $Attributes.Add('roles', $($Roles)) } if ($Signature){ $Attributes.Add('signature', $($Signature)) } if ($GroupIDs){ $Attributes.Add('group_ids', $($GroupIDs)) } if ($MemeberOf){ $Attributes.Add('member_of', $($MemeberOf)) } if ($ObserverOf){ $Attributes.Add('observer_of', $($ObserverOf)) } $Body = $Attributes | ConvertTo-Json Get-FreshServiceAPIResult -APIEndpoint "$($APIURL)/agents" -Body $Body -Method Post } End{ Write-Verbose -Message "Ending $($MyInvocation.InvocationName)..." } } |