The example below assumes you have already installed ODM Powershell module.
How to install ODM API Powershell
Note that this script is provided as-is for example purposes only, and you may need to modify it to work for your specific project.
The below example download and save to csv file the events of a task based on the task diagnostics information.
How to get task diagnostics information
$Path = "c:\temp\"
Write-Host "`n`n"
$DiagInfo = Read-Host "Paste in the Copy Diagnostics text and press Enter"
$ClearedDiagInfo = $DiagInfo -replace '[^\p{L}\p{Nd}/=/_/-]', ''
Write-Host "`n"
$OrganizationID = ($ClearedDiagInfo | Out-String | % { [Regex]::Matches($_, "(?<=OrganizationID)((.|\n)*?)(?=DeploymentRegion)") }).value
$Region = ($ClearedDiagInfo | Out-String | % { [Regex]::Matches($_, "(?<=DeploymentRegion)((.|\n)*?)(?=OrganizationName)") }).value
$OrganizationName = ($ClearedDiagInfo | Out-String | % { [Regex]::Matches($_, "(?<=OrganizationName)((.|\n)*?)(?=ProjectID)") }).value
$ProjectWorkloadID = ($ClearedDiagInfo | Out-String | % { [Regex]::Matches($_, "(?<=ProjectID)((.|\n)*?)(?=TaskID)") }).value
$TaskID = $ClearedDiagInfo.Substring(($ClearedDiagInfo.IndexOf("TaskID") + 6), ($ClearedDiagInfo.length - $ClearedDiagInfo.IndexOf("TaskID") - 6))
Write-Host "Connecting to Region:"$Region
Connect-OdmService -Region $Region # -NoPrompt
Write-Host "Selecting Organization:"$OrganizationID
Select-OdmOrganization $OrganizationID
Write-Host "Selecting ProjectWorkload:"$ProjectWorkloadID
clear-variable AllProjectworkloads -ErrorAction SilentlyContinue
$Projects = Get-OdmProject
foreach ($Project in $Projects) {
$Projectworkloads = get-odmproject $project.Id | get-odmprojectworkload
foreach ($Projectworkload in $Projectworkloads) {
add-member -InputObject $Projectworkload -MemberType NoteProperty -Name ProjectID -Value $Project.ID
}$AllProjectworkloads = $AllProjectworkloads + $Projectworkloads
}; $CurrProjectWorkload = $AllProjectworkloads | Where-Object { $_.Id -eq $ProjectWorkloadID }
Get-OdmProject $CurrProjectWorkload.ProjectID | Get-OdmProjectWorkload -Type $CurrProjectWorkload.WorkloadType | Select-OdmProjectWorkload
clear-variable task -ErrorAction SilentlyContinue
$task = get-odmtask -TaskId $TaskID
If ($null -eq $task) { Write-Host "`n`n"; write-host "No task found, probably deleted?"; break }
Write-Host "Downloading events"
$events = get-odmevent -all -FilterObject $task
$events | export-csv ($path + $taskid + ".csv") -notypeinformation