Public/Get-DatabricksJob.ps1
|
function Get-DatabricksJob { [CmdletBinding()] param( [switch] $PassThru ) $PageToken = $null $PageCount = 0 $ListedCount = 0 $RetrievedCount = 0 $StartedAt = Get-Date do { $PageCount++ Write-Progress -Activity 'Databricks Jobs' -Status "Listing page $PageCount" if ($PageToken) { $Result = & databricks jobs list --limit 100 "--page-token=$PageToken" -o json | ConvertFrom-Json } else { $Result = & databricks jobs list --limit 100 -o json | ConvertFrom-Json } $Jobs = @() if ($Result -is [System.Array]) { $Jobs = $Result } elseif ($Result.jobs) { $Jobs = $Result.jobs } $ListedCount += $Jobs.Count foreach ($Job in $Jobs) { if ($Job.job_id) { $RetrievedCount++ Write-Progress -Activity 'Databricks Jobs' -Status "Retrieving job $RetrievedCount" -CurrentOperation "job_id: $($Job.job_id)" $JobDetail = & databricks jobs get $Job.job_id -o json | ConvertFrom-Json if ($PassThru) { $JobDetail } } } if ($Result -is [System.Array]) { $PageToken = $null } else { if ($Result.next_page_token) { $PageToken = $Result.next_page_token.ToString().Trim() } else { $PageToken = $null } } } while ($PageToken) Write-Progress -Activity 'Databricks Jobs' -Completed if (-not $PassThru) { $Elapsed = (Get-Date) - $StartedAt [PSCustomObject]@{ ListedJobs = $ListedCount RetrievedJobs = $RetrievedCount Pages = $PageCount DurationSeconds = [math]::Round($Elapsed.TotalSeconds, 2) } } } |