Skip to content

Instantly share code, notes, and snippets.

View jdmills-edu's full-sized avatar

JD Mills jdmills-edu

View GitHub Profile
@jdmills-edu
jdmills-edu / DropboxAPI-CreatePaperDoc.ps1
Last active September 20, 2017 20:02
A PowerShell script to create a Dropbox Paper document from markdown, impersonating a Dropbox Business/Education/Enterprise Team Member.
param(
[Parameter(Mandatory=$true)][String]$markdownFilePath,
[String]$parentFolderID
)
$token = 'Bearer xxxyourapptokenherexxx'
#You'll need to use the Dropbox Business API to get the Team Member's ID.
$teamMemberID = "xxxxxx"
@jdmills-edu
jdmills-edu / DropboxAPI-GetMemberByEmail.ps1
Last active September 20, 2017 19:17
A PowerShell script that retrieves Dropbox Business Team Member information for a given email address.
param(
[Parameter(Mandatory=$true)][String]$emailAddress
)
#API token from https://www.dropbox.com/developers/apps
$token = 'Bearer YourTeamMemberInformationAppTokenHere'
$body = '{"members":[{".tag":"email","email":"'+$emailAddress+'"}]}'
$headers = @{
@jdmills-edu
jdmills-edu / ZendeskAPI-CreateTicket.ps1
Last active September 20, 2017 19:16
A PowerShell script that creates a Zendesk ticket based on the parameters supplied when calling it.
param(
[Parameter(Mandatory=$true)][String]$subject,
[Parameter(Mandatory=$true)][String]$description,
[Parameter(Mandatory=$true)][String]$requesterID,
[Parameter(Mandatory=$true)][String]$assignedGroupID,
[String]$tag
)
#Zendesk API Connection Headers Referencing System Environmental Variables for username and API token.
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($ZendeskAPI_Username):$($ZendeskAPI_Token)"));}
@jdmills-edu
jdmills-edu / ZendeskAPI-ChangeTicketStatus.ps1
Last active September 20, 2017 19:53
A PowerShell script that changes the status of a Zendesk ticket.
param(
[Parameter(Mandatory=$true)][Int32]$ticketID,
[Parameter(Mandatory=$true)][ValidateSet('open', 'pending', 'on-hold', 'solved')][String]$ticketStatus
)
#Zendesk API Connection Headers Referencing System Environmental Variables for username and API token.
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($ZendeskAPI_Username):$($ZendeskAPI_Token)"));}
#Zendesk API: Update Ticket
$uri = "https://yourdomain.zendesk.com/api/v2/tickets/$ticketID.json"
@jdmills-edu
jdmills-edu / ZendeskAPI-GetTicket.ps1
Last active September 20, 2017 19:15
A PowerShell script that returns a Zendesk ticket of a given ID.
param(
[Parameter(Mandatory=$true)][Int32]$ticketID
)
#Zendesk API Connection Headers Referencing System Environmental Variables for username and API token.
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($env:ZendeskAPI_Username):$($env:ZendeskAPI_Token)"));}
$ticketsURI = "https://yourdomain.zendesk.com/api/v2/tickets/$ticketID.json"
$ticket = Invoke-RestMethod -Uri $ticketsURI -Method Get -Headers $headers -ContentType "application/json"
@jdmills-edu
jdmills-edu / ZendeskAPI-GetUser.ps1
Last active September 20, 2017 19:14
A PowerShell script that returns a Zendesk user.
param(
[Parameter(Mandatory=$true)][String]$userID
)
#Zendesk API Connection Headers Referencing System Environmental Variables for username and API token.
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($env:ZendeskAPI_Username):$($env:ZendeskAPI_Token)"));}
$userURI = "https://yourdomain.zendesk.com/api/v2/users/$userID.json"
$user = Invoke-RestMethod -Uri $userURI -Method Get -Headers $headers -ContentType "application/json"
$user = $user.user
@jdmills-edu
jdmills-edu / ZendeskAPI-PostComment.ps1
Created September 20, 2017 19:36
A PowerShell script that posts a comment (public or private) to a Zendesk ticket. Supports rich and HTML comments and author impersonation.
param(
[Parameter(Mandatory=$true)][Int32]$ticketID,
[Parameter(Mandatory=$true)][String]$body,
[Parameter(Mandatory=$true)][ValidateSet('rich', 'html')][String]$body_type,
[Parameter(Mandatory=$true)][ValidateSet('private', 'public')][string]$scope,
[String][ValidateSet('assignee', 'apiuser')]$author
)
if($body_type -eq "html"){
$zd_body_type = "html_body"
@jdmills-edu
jdmills-edu / ZendeskAPI-GetZendeskUsers.ps1
Created September 20, 2017 20:14
A PowerShell script that lists all Zendesk users in your tenant. You can use the role parameter to have the script return admins, agents, agents+admins, end-users, or all users. Supports pagination and deduplication.
param(
[ValidateSet('admin', 'agents', 'allagents', 'endusers', 'allusers')][String]$role
)
#Zendesk API Connection Headers Referencing System Environmental Variables for username and API token.
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($env:ZendeskAPI_Username):$($env:ZendeskAPI_Token)"));}
#GET ALL ZENDESK USERS
$allUsers = @()
@jdmills-edu
jdmills-edu / ZendeskAPI-SyncOutOfOffice.ps1
Last active September 20, 2017 20:23
This PowerShell script synchronizes the Out-Of-Office status of your Zendesk agent Exchange mailboxes with the Zendesk Out-Of-Office Extension. This provides a much better user experience to your agents than requiring them to set their statuses separately in Outlook and Zendesk. Run this as a scheduled task.
#Download all admin and agent user objects from Zendesk.
$agents = &ZendeskAPI-GetZendeskUsers.ps1 "allagents"
#Trim agent list.
$agents = $agents | where email -like "*@yourdomain.com" | sort email
#Connect to Exchange Online. Use your own script here or swap this line out with the connection commands supplied by Microsoft.
#There's no reason this won't work with Exchange On-Prem AFAIK. We just use Exchange Online, so the comments reference it.
&ConnectToExchangeOnline.ps1
@jdmills-edu
jdmills-edu / ZendeskAPI-UpdateCustomField.ps1
Created September 20, 2017 20:26
This PowerShell script updates a custom field on a given Zendesk ticket.
param(
[Parameter(Mandatory=$true)][Int32]$ticketID,
[Parameter(Mandatory=$true)][Int32]$fieldID,
[Parameter(Mandatory=$true)][string]$fieldValue
)
#Zendesk API Connection Headers Referencing System Environmental Variables for username and API token.
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$($env:ZendeskAPI_Username):$($env:ZendeskAPI_Token)"));}
#Zendesk API: Update Ticket