Hello,
I wrote the following script that simply list the very last run of each job and return the job status.
unfortunatelly the script runs fine when running as Logged User, but it freezes when running over SYSTEM. Any idea?
ps_content=r’’’
if ((Get-PSSnapin -Name VeeamPSSnapin -ErrorAction SilentlyContinue) -eq $null) { Add-PsSnapin -Name VeeamPSSnapin }
$VBRBackupSessions = Get-VBRBackupSession | Where-Object { ($.CreationTime -ge (Get-Date).AddHours(-48)) } | Group-Object JobName | ForEach-Object { $ | Select-Object -ExpandProperty Group | Sort EndTime -Descending | Select-Object -First 1 }
Foreach ($VBRBackupSession in $VBRBackupSessions) {
"Job: " + $VBRBackupSession.Name + " - State: " + $VBRBackupSession.State +
$( if ($VBRBackupSession.State -eq "Working") { " " + $VBRBackupSession.BaseProgress + "%"
} else { if ($VBRBackupSession.State -ne "Idle") { " " + $VBRBackupSession.EndTime.ToString() + " - Result: " + $VBRBackupSession.Result } } ) +[Environment]::NewLine
}
‘’’
import os
def ecmd(command):
import ctypes
from subprocess import PIPE, Popen
class disable_file_system_redirection:
_disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
_revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
def __enter__(self):
self.old_value = ctypes.c_long()
self.success = self._disable(ctypes.byref(self.old_value))
def __exit__(self, type, value, traceback):
if self.success:
self._revert(self.old_value)
with disable_file_system_redirection():
obj = Popen(command, shell = True, stdout = PIPE, stderr = PIPE)
out, err = obj.communicate()
ret=obj.returncode
if ret==0:
if out:
return out.strip()
else:
return ret
else:
if err:
return err.strip()
else:
return ret
file_name=‘veeam-monitoring.ps1’
file_path=os.path.join(os.environ[‘TEMP’], file_name)
with open(file_path, ‘wb’) as wr:
wr.write(ps_content)
ecmd(‘powershell “Set-ExecutionPolicy RemoteSigned”’)
print ecmd(‘powershell “%s”’%file_path)
os.remove(file_path)
Thank you in advance for help