Public/Update-ServiceNowToken.ps1
function Update-ServiceNowToken { [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact='High')] [OutputType([System.Object[]])] param ( [Parameter(Mandatory=$true)][PSObject] $OAuthToken ) $Reply = New-Object -TypeName PSCustomObject $body = [System.Text.Encoding]::UTF8.GetBytes('grant_type=refresh_token&client_id='+[uri]::EscapeDataString($OAuthToken.ClientID)+'&client_secret='+[uri]::EscapeDataString($OAuthToken.ClientSecret)+'&refresh_token='+[uri]::EscapeDataString($OAuthToken.Refresh_Token)) try{ if ($PSCmdlet.ShouldProcess( ("Updating Token"), ("This will update the ServiceNow Token, continue?"), "Confirm ServiceNow Token Update" ) ) { [PSCustomObject]$Reply = Invoke-RestMethod -Uri "$($OAuthToken.ServerURL)/oauth_token.do" -Body $Body -ContentType 'application/x-www-form-urlencoded' -Method Post } if ($Reply.GetType().Name -eq 'string') { write-error 'Auth request returned a string. Please check host.' $Reply = $null }else{ #Add the properties to the OAuth return object so that they can be checked later. $Reply | Add-Member -NotePropertyName expires -NotePropertyValue (get-date).AddSeconds($Reply.expires_in) $Reply | Add-Member -NotePropertyName Clientid -NotePropertyValue $OAuthToken.Clientid $Reply | Add-Member -NotePropertyName ClientSecret -NotePropertyValue $OAuthToken.ClientSecret $Reply | Add-Member -NotePropertyName ServerURL -NotePropertyValue $OAuthToken.ServerURL $Reply | Add-Member -NotePropertyName AuthHeader -NotePropertyValue "Bearer $($Reply.access_token)" $Reply | Add-Member -NotePropertyName refresh_token_expires -NotePropertyValue (get-date).AddDays(100) } #write-output "Auth Token Refreshed - expires $($OAuthToken.expires)" } catch{ write-error "Auth Token Refresh Failed - $($_.exception)" } return ,$Reply } |