enh(apps::backup::veeam::local::jobstatus): Add Veeam Agent compatibility for jobs monitoring (#5730)

Refs:CTOR-1801
This commit is contained in:
itoussies 2025-09-09 16:49:12 +02:00 committed by GitHub
parent d4b7084fac
commit ddbf4b6bb5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -47,50 +47,111 @@ Try {
$items = New-Object System.Collections.Generic.List[Hashtable];
$sessions = @{}
Get-VBRBackupSession | Sort CreationTimeUTC -Descending | ForEach-Object {
$jobId = $_.jobId.toString()
if (-not $sessions.ContainsKey($jobId)) {
$sessions[$jobId] = New-Object System.Collections.Generic.List[Hashtable];
$session = @{}
$session.result = $_.Result.value__
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$sessions[$jobId].Add($session)
} elseif ($sessions[$jobId].Length -lt 2) {
$session = @{}
$session.result = $_.Result.value__
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$sessions[$jobId].Add($session)
}
$isVeeamAgent=$false
$vbrjob=Get-VBRJob
if (($vbrjob | Select-Object -first 1).JobType -like "*Agent*") {
$isVeeamAgent=$true
} else {
$isVeeamAgent=$false
}
Get-VBRJob | ForEach-Object {
$item = @{}
$item.name = $_.Name
$item.type = $_.JobType.value__
$item.isRunning = $_.isRunning
$item.scheduled = $_.IsScheduleEnabled
$item.isContinuous = 0
$sessions = @{}
if ($_.isContinuous -eq $true) {
$item.isContinuous = 1
if ($isVeeamAgent) {
Get-VBRComputerBackupJobSession | Sort-Object CreationTime -Descending | ForEach-Object {
$jobId = $_.JobId.toString()
if (-not $sessions.ContainsKey($jobId)) {
$sessions[$jobId] = New-Object System.Collections.Generic.List[Hashtable];
$session = @{}
$session.result = $_.Result.value__
$session.creationTimeUTC = (get-date -date $_.CreationTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
$session.endTimeUTC = (get-date -date $_.EndTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
$sessions[$jobId].Add($session)
} elseif ($sessions[$jobId].Length -lt 2) {
$session = @{}
$session.result = $_.Result.value__
$session.creationTimeUTC = (get-date -date $_.CreationTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
$session.endTimeUTC = (get-date -date $_.EndTime.ToUniversalTime() -Uformat ' . "'%s'" . ')
$sessions[$jobId].Add($session)
}
}
$guid = $_.Id.Guid.toString()
if ($sessions.ContainsKey($guid)) {
$item.sessions = $sessions[$guid]
} else {
$item.sessions = New-Object System.Collections.Generic.List[Hashtable];
$session = @{}
$session.result = -10
$session.creationTimeUTC = ""
$session.endTimeUTC = ""
$item.sessions.Add($session)
Get-VBRComputerBackupJob | ForEach-Object {
$item = @{}
$item.name = $_.Name
$item.type = $_.Type.value__
$item.isRunning = $false
$item.scheduled = $_.ScheduleEnabled
$item.isContinuous = 0
if ($_.isContinuous -eq $true) {
$item.isContinuous = 1
}
$Id = $_.Id.toString()
if ($sessions.ContainsKey($Id)) {
$item.sessions = $sessions[$Id]
if ($sessions[$_.Id].State -eq "Running") {
$item.isRunning = $true
}
} else {
$item.sessions = New-Object System.Collections.Generic.List[Hashtable];
$session = @{}
$session.result = -10
$session.creationTimeUTC = ""
$session.endTimeUTC = ""
$item.sessions.Add($session)
}
$items.Add($item)
}
$items.Add($item)
} else {
Get-VBRBackupSession | Sort-Object CreationTimeUTC -Descending | ForEach-Object {
$jobId = $_.jobId.toString()
if (-not $sessions.ContainsKey($jobId)) {
$sessions[$jobId] = New-Object System.Collections.Generic.List[Hashtable];
$session = @{}
$session.result = $_.Result.value__
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$sessions[$jobId].Add($session)
} elseif ($sessions[$jobId].Length -lt 2) {
$session = @{}
$session.result = $_.Result.value__
$session.creationTimeUTC = (get-date -date $_.CreationTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$session.endTimeUTC = (get-date -date $_.EndTimeUTC.ToUniversalTime() -Uformat ' . "'%s'" . ')
$sessions[$jobId].Add($session)
}
}
$vbrjob | ForEach-Object {
$item = @{}
$item.name = $_.Name
$item.type = $_.JobType.value__
$item.isRunning = $_.isRunning
$item.scheduled = $_.IsScheduleEnabled
$item.isContinuous = 0
if ($_.isContinuous -eq $true) {
$item.isContinuous = 1
}
$guid = $_.Id.Guid.toString()
if ($sessions.ContainsKey($guid)) {
$item.sessions = $sessions[$guid]
} else {
$item.sessions = New-Object System.Collections.Generic.List[Hashtable];
$session = @{}
$session.result = -10
$session.creationTimeUTC = ""
$session.endTimeUTC = ""
$item.sessions.Add($session)
}
$items.Add($item)
}
}
$jsonString = $items | ConvertTo-JSON-20 -forceArray $true
@ -112,6 +173,6 @@ __END__
=head1 DESCRIPTION
Method to get veeam job status informations.
Method to get Veeam job status information.
=cut