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

@ -42,59 +42,120 @@ $culture = new-object "System.Globalization.CultureInfo" "en-us"
$ps .= ' $ps .= '
Try { Try {
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
$items = New-Object System.Collections.Generic.List[Hashtable]; $items = New-Object System.Collections.Generic.List[Hashtable];
$sessions = @{} $isVeeamAgent=$false
Get-VBRBackupSession | Sort CreationTimeUTC -Descending | ForEach-Object { $vbrjob=Get-VBRJob
$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)
}
}
Get-VBRJob | ForEach-Object { if (($vbrjob | Select-Object -first 1).JobType -like "*Agent*") {
$item = @{} $isVeeamAgent=$true
$item.name = $_.Name } else {
$item.type = $_.JobType.value__ $isVeeamAgent=$false
$item.isRunning = $_.isRunning }
$item.scheduled = $_.IsScheduleEnabled
$item.isContinuous = 0
if ($_.isContinuous -eq $true) {
$item.isContinuous = 1
}
$guid = $_.Id.Guid.toString() $sessions = @{}
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) 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)
}
}
$jsonString = $items | ConvertTo-JSON-20 -forceArray $true Get-VBRComputerBackupJob | ForEach-Object {
Write-Host $jsonString $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)
}
} 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
Write-Host $jsonString
} Catch { } Catch {
Write-Host $Error[0].Exception Write-Host $Error[0].Exception
exit 1 exit 1
@ -112,6 +173,6 @@ __END__
=head1 DESCRIPTION =head1 DESCRIPTION
Method to get veeam job status informations. Method to get Veeam job status information.
=cut =cut