first commit
commit
6a9213812a
|
|
@ -0,0 +1,58 @@
|
|||
import subprocess
|
||||
import json
|
||||
|
||||
# Define the PowerShell script as a multiline string.
|
||||
# This script retrieves all Veeam jobs, finds the last session for each job,
|
||||
# and outputs a JSON array with job Name, Last Run Status, and Last Run Time.
|
||||
powershell_script = r'''
|
||||
$ErrorActionPreference = "Stop"
|
||||
# Import Veeam PowerShell Snap-In (if not already loaded)
|
||||
if (-not (Get-PSSnapin -Name VeeamPSSnapin -ErrorAction SilentlyContinue)) {
|
||||
Add-PSSnapin VeeamPSSnapin
|
||||
}
|
||||
$jobs = Get-VBRJob
|
||||
$jobInfo = @()
|
||||
foreach ($job in $jobs) {
|
||||
$session = $job.FindLastSession()
|
||||
if ($session -ne $null) {
|
||||
$jobInfo += [PSCustomObject]@{
|
||||
Name = $job.Name
|
||||
LastRunStatus = $session.Result
|
||||
LastRunTime = $session.EndTime
|
||||
}
|
||||
}
|
||||
else {
|
||||
$jobInfo += [PSCustomObject]@{
|
||||
Name = $job.Name
|
||||
LastRunStatus = "Never run"
|
||||
LastRunTime = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
$jobInfo | ConvertTo-Json -Depth 3
|
||||
'''
|
||||
|
||||
try:
|
||||
# Execute the PowerShell script via subprocess.
|
||||
result = subprocess.run(["powershell", "-Command", powershell_script],
|
||||
capture_output=True, text=True, check=True)
|
||||
except subprocess.CalledProcessError as err:
|
||||
print("Error running PowerShell command:")
|
||||
print(err.stderr)
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
# Parse the JSON output from PowerShell.
|
||||
jobs = json.loads(result.stdout)
|
||||
# In case only one job is returned, wrap it in a list.
|
||||
if isinstance(jobs, dict):
|
||||
jobs = [jobs]
|
||||
except Exception as e:
|
||||
print("Error parsing JSON output:", e)
|
||||
exit(1)
|
||||
|
||||
# Display the job information.
|
||||
for job in jobs:
|
||||
print(f"Job: {job['Name']}")
|
||||
print(f" Last Run Status: {job['LastRunStatus']}")
|
||||
print(f" Last Run Time: {job['LastRunTime']}\n")
|
||||
Loading…
Reference in New Issue