SET OrgUrl TO $'''https://org362aa0a6.crm8.dynamics.com'''
SET WorkQueueId TO $'''2ff3dc7e-9e73-f111-ab0d-6045bdce39cc'''
SET TenantId TO $'''5a2c87d9-ad1d-4d88-85ef-f5a3c30ca040'''
Scripting.RunPowershellScript.RunScript Script: $'''$ErrorActionPreference = \'Stop\'
$WarningPreference = \'SilentlyContinue\'
$ProgressPreference = \'SilentlyContinue\'
$res = \'%OrgUrl%\'
$tenant = \'%TenantId%\'
try {
Import-Module Az.Accounts -ErrorAction Stop
$ctx = Get-AzContext -ListAvailable | Where-Object { $_.Tenant.Id -eq $tenant } | Select-Object -First 1
if (-not $ctx) {
# Use browser sign-in (no console prompts) so it works from a desktop flow
Update-AzConfig -LoginExperienceV2 Off -EnableLoginByWam $false -Scope CurrentUser | Out-Null
Connect-AzAccount -Tenant $tenant -SkipContextPopulation 6>$null | Out-Null
$ctx = Get-AzContext -ListAvailable | Where-Object { $_.Tenant.Id -eq $tenant } | Select-Object -First 1
}
if (-not $ctx) {
Write-Output \"ERROR: Sign-in to tenant $tenant did not complete.\"
return
}
$t = Get-AzAccessToken -ResourceUrl $res -TenantId $tenant -DefaultProfile $ctx
if ($t.Token -is [System.Security.SecureString]) {
Write-Output ([System.Net.NetworkCredential]::new(\'\', $t.Token).Password)
} else {
Write-Output $t.Token
}
} catch {
Write-Output (\"ERROR: \" + $_.Exception.Message)
}''' ScriptOutput=> PowershellOutput
Text.Trim Text: PowershellOutput TrimOption: Text.TrimOption.Both TrimmedText=> AccessToken
IF StartsWith(AccessToken, $'''ERROR''', True) THEN
Display.ShowMessageDialog.ShowMessage Title: $'''ITSM work queue - sign-in failed''' Message: AccessToken Icon: Display.Icon.ErrorIcon Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
EXIT Code: 0
END
Web.InvokeWebService.InvokeWebService Url: $'''%OrgUrl%/api/data/v9.2/workqueueitems?$filter=_workqueueid_value eq %WorkQueueId%''' Method: Web.Method.Get Accept: $'''application/json''' ContentType: $'''application/json''' CustomHeaders: $'''Authorization: Bearer %AccessToken%
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.maxpagesize=5000''' ConnectionTimeout: 60 FollowRedirection: True ClearCookies: False FailOnErrorStatus: False EncodeRequestBody: False UserAgent: $'''Mozilla/5.0 (Windows NT 10.0; Win64; x64)''' Encoding: Web.Encoding.AutoDetect AcceptUntrustedCertificates: False ResponseHeaders=> WebServiceResponseHeaders Response=> WebServiceResponse StatusCode=> StatusCode
Variables.ConvertJsonToCustomObject Json: WebServiceResponse CustomObject=> JsonAsCustomObject
SET WorkQueueItems TO JsonAsCustomObject['value']
SET ItemCount TO WorkQueueItems.Count
SET ItemDetails TO $''''''
LOOP FOREACH CurrentItem IN WorkQueueItems
SET ItemDetails TO $'''%ItemDetails%%CurrentItem['name']% | State: %CurrentItem['statecode']% | %CurrentItem['input']%
'''
END
Display.ShowMessageDialog.ShowMessage Title: $'''Invoice Processing Queue''' Message: $'''HTTP status: %StatusCode% Items: %ItemCount%
(State: 0=Queued, 1=Processing, 2=Processed, 3=OnHold, 4=Error)
%ItemDetails%''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.DesktopDirectory SpecialFolderPath=> DesktopPath
File.WriteText File: $'''%DesktopPath%\\InvoiceProcessingQueue_Items.json''' TextToWrite: WebServiceResponse AppendNewLine: False IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.UTF8
Display.ShowMessageDialog.ShowMessage Message: $'''%DesktopPath%\\InvoiceProcessingQueue_Items.json''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed2
===
@@'InputSummaryValue:WORKQUEUE': 'Invoice Processing Queue'
WorkQueues.GetWorkQueueItems WorkQueue: $'''2ff3dc7e-9e73-f111-ab0d-6045bdce39cc''' FilterRows: $'''<attribute name=\"name\" />
<attribute name=\"input\" />
<attribute name=\"statecode\" />
<attribute name=\"statuscode\" />
<attribute name=\"priority\" />
<attribute name=\"expirydate\" />
<attribute name=\"processingresult\" />
<attribute name=\"createdon\" />
<attribute name=\"workqueueitemid\" />
<order attribute=\"createdon\" descending=\"false\" />''' RowsToReturn: 5000 ThrowIfWorkQueueNotFound: True WorkQueueItems=> WorkQueueItems2
SET QueueItemsJson TO $'''['''
SET JsonSeparator TO $''''''
LOOP FOREACH QueueItem IN WorkQueueItems2
SET QueueItemsJson TO $'''%QueueItemsJson%%JsonSeparator%{\"id\":\"%QueueItem.Id%\",\"name\":\"%QueueItem.Name%\",\"value\":%QueueItem.Value%}'''
SET JsonSeparator TO $''','''
END
SET QueueItemsJson TO $'''%QueueItemsJson%]'''
SET QueueItemCount TO WorkQueueItems2.Count
Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.DesktopDirectory SpecialFolderPath=> DesktopFolder
File.WriteText File: $'''%DesktopFolder%\\InvoiceProcessingQueue_BuiltIn.json''' TextToWrite: QueueItemsJson AppendNewLine: False IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.UTF8
Display.ShowMessageDialog.ShowMessage Title: $'''Invoice Processing Queue (built-in action)''' Message: $'''Items: %QueueItemCount%
%QueueItemsJson%''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True ButtonPressed=> ButtonPressed
===
No comments:
Post a Comment