Veeam Backup & Replication script issue

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

Hi @danilo.brambilla
We will forward your script inquiry to the Script Development team for further analysis. Rest assured that that we will get back to you once we get word from the team. We appreciate your patience on the matter.

Hi @danilo.brambilla,
We are processing your request will update you once it has been completed.

Thank you

Thank you :slight_smile: Once it will be working with SYSTEM account I would like to use it also as a Monitor custom procedure. Alert would be raised when words “Warning” or “Error” will be present in script output and closed when both will be not present.

@danilo.brambilla ,

We have created a support ticket for your query and have presented some product questions in the email we’ve sent. We are looking forward to your reply. Thank you

Hello,

I’ve just found the solution by myself.

I have upgraded Powershell from v2 to v4 and script is now working as expected also with LocalSystem user.

Thank you all for support

@danilo.brambilla ,

We thank you for sharing the solution you had engaged to make the script procedure work. We appreciate your effort and we’ll make sure to make this information available to our scripts team.

Hi @danilo.brambilla

Thanks for your valuable feedback.