diff --git a/src/centreon/common/powershell/veeam/jobstatus.pm b/src/centreon/common/powershell/veeam/jobstatus.pm index f44a44a26..5ce6d72f6 100644 --- a/src/centreon/common/powershell/veeam/jobstatus.pm +++ b/src/centreon/common/powershell/veeam/jobstatus.pm @@ -42,59 +42,120 @@ $culture = new-object "System.Globalization.CultureInfo" "en-us" $ps .= ' -Try { - $ErrorActionPreference = "Stop" +Try { + $ErrorActionPreference = "Stop" - $items = New-Object System.Collections.Generic.List[Hashtable]; + $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 - Get-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 - } + if (($vbrjob | Select-Object -first 1).JobType -like "*Agent*") { + $isVeeamAgent=$true + } else { + $isVeeamAgent=$false + } - $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) - } + $sessions = @{} - $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 - Write-Host $jsonString + 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) + } + + } 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 { Write-Host $Error[0].Exception exit 1 @@ -112,6 +173,6 @@ __END__ =head1 DESCRIPTION -Method to get veeam job status informations. +Method to get Veeam job status information. =cut