On Demand Migration - Powershell API - Example script - Download events of task based on task diagnostics information

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