Aktionen

Zabbix:Template BackupExec 2012 Jobs

Aus znilwiki

Changelog:

  • 25.04.2014: Erste Öffentliche Version 0.0.0.40
  • 29.01.2015: Version 0.0.0.42 unterstützt auch BackupExec 2014
  • 20.02.2015: Version 0.0.0.43 kann nun auch wirklich gleichzeitig 2014 und 2012
  • 13.05.2015: Version 0.0.0.45 kann auch mit BackupExec 15 umgehen
  • 13.09.2016: Version 1.0.0.7 (BETA Version) sollte pauschal mit allen BackupExec Versionen mit PowerShell umgehen können


Bekannte Fehler:

  • Der Zabbix Agent wird mit SYSTEM-Rechten ausgeführt. Die Abfrage von BackupExec 2012 erfolgt über die BEMCLI, das ist die PowerShell Erweiterung zu BackupExec 2012. In der Praxis bedeutet dies, das eine PowerShell gestartet wird, diese die BackupExec Erweiterungen nachlädt und dann die eigentlichen Abfragen durchführt. Die Erweiterungen werden über PowerShell-Scripts (.ps1) geladen. Und bei deren Ausführung zickt Windows gerne rum wenn diese z.B. nicht signiert sind. Beim Programmieren musste ich leider mehrmals feststellen das es hakte. Deshalb führt mein Programm bei der Abfrage ein Set-ExecutionPolicy Bypass aus. DAMIT WERDEN ALLE POWERSHELL-SCRIPTE OHNE ÜBERPRÜFUNG DER SIGNATUR AUSGEFÜHRT. DIESE EINSTELLUNG IST FÜR DEN SERVER GGF. DAUERHAFT FÜR ALLE SCRIPTE
Important.png
Hinweis: Die neue Version 0.0.0.43 funktioniert auch mit BackupExec 2014!


Important.png
Hinweis: Die BETA Version 1.0.0.7 funktioniert sollte mit jeder BackupExec Version ab 2012 funktionieren



Download

Download: ZabbixTemplateBackupExec2012.zip Version 0.0.0.43 mit BackupExec 2014 Unterstützung
Download BETA: ZabbixTemplateBackupExecPS.zip Version 1.0.0.7 mit BackupExec PS Unterstützung


Vorwort

Nachdem ich so etwas für BackupExec 2010 geschrieben hatte fehlte noch das Gegenstück für BackupExec 2012. Hier gibt es keine bemcmd.exe sondern die BEMCLI wird genutzt.
Dabei handelt es sich um eine PowerShell Erweiterung.
Die aktuelle Version sollte mit BackupExec 2014 und BackupExec 15 auch umgehen können.



Screenshots / Bilder

Zabbix-BackupExec2012-001.png



Funktionsweise

Wie funktioniert es?
Die BackupExec2012.exe wird vom Zabbix Agenten auf dem jeweiligen Server aufgerufen.
Die .exe ermittelt in der Registry den Installationspfad von BackupExec 2012 und sucht darüber den Pfad zur PowerShell-Erweiterung BEMCLI
Diese wird von der BackupExec2012.exe aufgerufen und kennt verschiedene Parameter:

discoverjobs       : Erzeugt eine Liste im JSON Format über alle Backup-Aufträge
                     die wiederkehrend geplant oder gerade aktiv sind.

Die nachfolgenden Parameter erwarten als 2. Parameter die Job Id!

jobstatus          : Gibt den Status des letzen Backup-Auftrages zurück. 
                     Rückgabewert ist Text
 
jobhowlongago      : Gibt die Zeit in Sekunden zurück die seit dem letzen Start des
                     Auftrages vergangen sind. Mit einem Trigger läßt sich so abfangen
                     das ein Auftrag nicht mehr wie geplant angelaufen ist.

jobbytes           : Gibt die gesamte gesicherte Datenmenge in Bytes zurück

jobruntime         : Gibt die Laufzeit des Backup-Auftrages in Sekunden zurück

jobPercentComplete : In Prozent wieviel gesichert wurde, 0 bis 100 möglich

jobErrorCode       : Gibt den letzten Fehlercode zurück (scheinbar immer 0)

jobErrorCategory   : Ist bei einem Fehler nicht 0, mögliche Werte noch unbekannt


Damit könnt Ihr das ganze zuvor einmal auf der Kommandozeile / DOS-Box testen.



Template

Im Zip-Archiv findet Ihr neben der BackupExec2012.exe auch das Template in Deutsch.
Die deutschen Versionen findet Ihr nach dem Import in der Hostgruppe 'Templates znil.net' mit den Namen

znil Template BackupExec 2012 Auftragsueberwachung ACTIVE AGENT

Also nur eine Active Agent Version - paasiv müsstet ihr eben selbst daraus bauen bei Bedarf
Darin sind NUR die Items - keine Trigger - die müsst ihr euch selbst anlegen. Als Hilfe dafür habe ich z.B. die Rückgabewerte gebaut wie lange der letzte Start her ist. Damit lässt sich indirekt erkennen wenn z.B,. ein Job hängt (wenn er z.B. mehr als 25h nicht neu gestartet wurde) etc.

Rückgabewerte "letzter Status"

Folgende Rückgabewerte sind bei "letzter Status" möglich:

Unknown
Canceled
Completed
SucceededWithExceptions
OnHold
Error
Missed
Recovered
Resumed
Succeeded
ThresholdAbort
Dispatched
DispatchFailed
InvalidSchedule
InvalidTimeWindow
NotInTimeWindow
Queued
Disabled
Active
Ready
Scheduled
Superseded
ToBeScheduled
Linked
RuleBlocked

In der Praxis einige wie "Queued" oder "Scheduled" eher nicht da meine Funktion den letzten Rückgabewert des letzten Auftrages/Jobs zurück liefert, nicht zukünftiger oder gerade laufender Aufträge.



Download

Download: ZabbixTemplateBackupExec2012.zip Version 0.0.0.45



Installation

Zur Installation müsst Ihr folgendes tun:

  • Kopiert die BackupExec2012.exe in das Verzeichnis in dem auch schon der Zabbix-Agent ist, z.B.
C:\Program Files\Zabbix
  • Tragt in die Agenten-Konfigurationsdatei, in der Regel ist das die zabbix_agentd.win.conf die Zeile
UserParameter=znil.BackupExec2012[*],"C:\Program Files\Zabbix\BackupExec2012.exe" $1 "$2"

ein - Pfad natürlich ggf. anpassen

  • Startet des Zabbix Agenten Dienst neu
net stop "zabbix agent"
net start "zabbix agent"
  • Import eine der .XML Dateien in Zabbix und verknüpft diese mit dem Host.
  • Warten! Alle 3600 Sekunden = 1 Stunde wird die Abfrage gestartet.
  • Da erst die Aufträge gefunden werden und dann daurch die Items angelegt werden dauert es eine Weile bis der Agent davon weis.
  • Als Beschleunigung: Nachdem Ihr in Zabbix die Items sehen könnt startet den AGenten auf dem Server noch einmal neu. Wen Ihr noch einen Proxy dazwischen habt müsst ihr den Dienst auf diesen auch einmal neu starten ... oder einfach abwarten!




Quellcode

Hier noch für Interessierte der Quellcode der BackupExec2012.exe:

#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icon256-32.ico
#AutoIt3Wrapper_Outfile=BackupExec2014.exe
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Change2CUI=y
#AutoIt3Wrapper_Res_Description=Zabbix Available Windows Updates
#AutoIt3Wrapper_Res_Fileversion=0.0.0.46
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_LegalCopyright=2014 Bernhard Linz
#AutoIt3Wrapper_Res_SaveSource=y
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_Field=Website|http://znil.net
#AutoIt3Wrapper_Res_Field=Manual|http://znil.net/index.php?title=Zabbix:Template_BackupExec_2014_Jobs
#AutoIt3Wrapper_Res_Field=See You|znil.net
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Opt('MustDeclareVars', 1)
#Region    ;************ Includes ************
#Include <Array.au3>
#include <Constants.au3>
#include <Date.au3>
#EndRegion ;************ Includes ************
; ##########################################################################################################################
; ##########################################################################################################################
; # backupexec2014.exe --> Tool for Check BackupJobs in Zabbix                                                             #
; # 2014 Bernhard Linz    /    Bernhard@znil.de    /    http://znil.net                                                    #
; # Idea and Original at Zabbix Wiki                                                                                       #
; #                                                                                                                        #
; # Latest Version of this Program and Template in German:                                                                 #
; # http://znil.net/index.php?title=Zabbix:Template_BackupExec_2014_Jobs                                                   #
; #                                                                                                                        #
; #	         ________  .__   __.  __   __        .__   __.  _______ .___________.                                          #
; #	        |       /  |  \ |  | |  | |  |       |  \ |  | |   ____||           |                                          #
; #	        `---/  /   |   \|  | |  | |  |       |   \|  | |  |__   `---|  |----`                                          #
; #	           /  /    |  . `  | |  | |  |       |  . `  | |   __|      |  |                                               #
; #	          /  /----.|  |\   | |  | |  `----.__|  |\   | |  |____     |  |                                               #
; #	         /________||__| \__| |__| |_______(__)__| \__| |_______|    |__|                                               #
; #                                                                                                                        #
; ##########################################################################################################################
; ##########################################################################################################################

; find the 'BEMCLI.exe' - take a look at Registry of Host
Dim $SoftwareBasePaths[9] = ["HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.2", _
							 "HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.2", _
							 "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.2", _
							 "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.1", _
							 "HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.1", _
							 "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.1", _
							 "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.0", _
							 "HKLM64\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.0", _
							 "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Symantec Backup Exec 14.0"]
Global $bemcli
Dim $aparameter[4]
	;$aparameter[0] = "Get-BEJob -JobType Backup -Status Scheduled,Active | select-object -property *" 					; get a List of scheduled and active jobs
	$aparameter[0] = "Get-BEJob -JobType Backup,Duplicate -Status Scheduled,Active,Linked | select-object -property *" 					; get a List of scheduled and active jobs
	$aparameter[1] = "Get-BEJob -JobType Duplicate -Status Linked | select-object -property *" 					; get a list of Duplicate Jobs
	$aparameter[2] = '-o21 -e -j"Name of Job"'			; get last Exit-Code of a specific job by Name
	$aparameter[3] = 'Get-BEJob -Id {ID of Job} | Get-BEJobHistory -FromLastJobRun | select-object -property *'			; get last Exit-Code of a specific job by ID

Dim $stemp
Dim $atemp
Dim $aatemp
Dim $aDateTemp
Dim $aRuntimeTemp
Dim $aBackupJobs_byName[1] = [ 0 ]
Dim $aBackupJobs_byID[1] = [ 0 ]
Dim $aBackupJobs_Selection[1] = [ 0 ]

Dim $s_JSONOutput
Dim $sRunCommand
Dim $sJobStatus
Dim $iJobStatus
Dim $iJobhowlongago
Dim $iJobBytes
Dim $iJobRuntime
Dim $iJobPercentComplete
Dim $iJobErrorCode

; Ok, we need the BEMCLI Extension for PowerShell, just find the BackupExec Installation Folder
; we take 3 try - depends of we are a 32 or 64 bit exe and if we run on a 32 or 64 bit system
$bemcli = RegRead($SoftwareBasePaths[0], "InstallLocation")
If $bemcli = "" Then
	$bemcli = RegRead($SoftwareBasePaths[1], "InstallLocation")
	If $bemcli = "" Then
		$bemcli = RegRead($SoftwareBasePaths[2], "InstallLocation")
		If $bemcli = "" Then
		$bemcli = RegRead($SoftwareBasePaths[3], "InstallLocation")
			If $bemcli = "" Then
				$bemcli = RegRead($SoftwareBasePaths[4], "InstallLocation")
				If $bemcli = "" Then
					$bemcli = RegRead($SoftwareBasePaths[5], "InstallLocation")
					If $bemcli = "" Then
						$bemcli = RegRead($SoftwareBasePaths[6], "InstallLocation")
						If $bemcli = "" Then
							$bemcli = RegRead($SoftwareBasePaths[7], "InstallLocation")
							If $bemcli = "" Then
								$bemcli = RegRead($SoftwareBasePaths[8], "InstallLocation")
								If $bemcli = "" Then
									ConsoleWriteError("Error, no installed BackupExec 2012/2014 found" & @CRLF)
								Exit 1
								EndIf
							EndIf
						EndIf
					EndIf
				EndIf
			EndIf
		EndIf
	EndIf
EndIf
$bemcli = "Import-Module '" & $bemcli & "Modules\BEMCLI\BEMCLI'"

; ##########################################################################################################################
; ##########################################################################################################################
;                                                                                   ########################################
; ######## ##     ## ##    ##  ######  ######## ####  #######  ##    ##  ######     ########################################
; ##       ##     ## ###   ## ##    ##    ##     ##  ##     ## ###   ## ##    ##    ########################################
; ##       ##     ## ####  ## ##          ##     ##  ##     ## ####  ## ##          ########################################
; ######   ##     ## ## ## ## ##          ##     ##  ##     ## ## ## ##  ######     ########################################
; ##       ##     ## ##  #### ##          ##     ##  ##     ## ##  ####       ##    ########################################
; ##       ##     ## ##   ### ##    ##    ##     ##  ##     ## ##   ### ##    ##    ########################################
; ##        #######  ##    ##  ######     ##    ####  #######  ##    ##  ######     ########################################
;                                                                                   ########################################
; ##########################################################################################################################
; ##########################################################################################################################
Func _BEMCLI($sbemparameter)
	Local $sRunCommand
	Local $outputBEMCLI
	Local $errorsBEMCLI
	Local $hBEMCLI
	Local $iBEMCLImaxWaitTime = 20000
	Local $iBEMCLImaxWaitTimeSTART
	Local $stdoutReadFEHLER
	; build the Command for run
	$sRunCommand = $bemcli & " ; " & $sbemparameter
	; Start the timer for max wait time
	$iBEMCLImaxWaitTimeSTART = TimerInit()
	; run the Command
	;ConsoleWrite('powershell.exe Set-ExecutionPolicy Bypass ; "' & $sRunCommand & '"' & @CRLF)
	$hBEMCLI = Run('powershell.exe Set-ExecutionPolicy Bypass ; "' & $sRunCommand & '"', @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD + $STDERR_CHILD)
	StdinWrite($hBEMCLI, @CRLF)
	StdinWrite($hBEMCLI)
	;get the output
	Do
		;Sleep(5)
		; get the output
		$outputBEMCLI = $outputBEMCLI & StdoutRead($hBEMCLI)
		; get the errors
		$errorsBEMCLI = $errorsBEMCLI & StderrRead($hBEMCLI)
		; did we have an error while reading?
		$stdoutReadFEHLER = @error
		If $stdoutReadFEHLER <> "" Then
			; No error, go on
			If $outputBEMCLI = "" Then
				; but also no output, let us take a 2. try
				$outputBEMCLI = $outputBEMCLI & StdoutRead($hBEMCLI)
				If $outputBEMCLI = "" Then
					; anymore no output, oh oh
					If $stdoutReadFEHLER <> "" Then
						; but we have an error message
						Return $errorsBEMCLI
					EndIf
				EndIf
			EndIf
		EndIf
	Until $stdoutReadFEHLER Or TimerDiff($iBEMCLImaxWaitTimeSTART) > $iBEMCLImaxWaitTime
	;MsgBox(0,"",$outputBEMCLI)
	Return $outputBEMCLI
EndFunc ;<== End _BEMCLI()

; ##########################################################################################################################
; ##########################################################################################################################
;                                       ####################################################################################
; ##     ##    ###    #### ##    ##     ####################################################################################
; ###   ###   ## ##    ##  ###   ##     ####################################################################################
; #### ####  ##   ##   ##  ####  ##     ####################################################################################
; ## ### ## ##     ##  ##  ## ## ##     ####################################################################################
; ##     ## #########  ##  ##  ####     ####################################################################################
; ##     ## ##     ##  ##  ##   ###     ####################################################################################
; ##     ## ##     ## #### ##    ##     ####################################################################################
;                                       ####################################################################################
; ##########################################################################################################################
; ##########################################################################################################################

If StringInStr($CmdLineRaw, "discoverjobs") > 0 Then
	Dim $s_JSONOutput
	; Get all scheduled and active Jobs
	$stemp = _BEMCLI($aparameter[0])

	$atemp = StringSplit($stemp, @CRLF)

	For $i = 1 To $atemp[0]
		If StringLeft($atemp[$i],StringLen("Id")) = "Id" Then
			$aatemp = StringSplit($atemp[$i],' : ', 1)
			_ArrayAdd($aBackupJobs_byID, $aatemp[$aatemp[0]])
			$aBackupJobs_byID[0] = $aBackupJobs_byID[0] + 1
		EndIf
		If StringLeft($atemp[$i],StringLen("Name")) = "Name" Then
			$aatemp = StringSplit($atemp[$i],' : ', 1)
			_ArrayAdd($aBackupJobs_byName, $aatemp[$aatemp[0]])
			$aBackupJobs_byName[0] = $aBackupJobs_byName[0] + 1
		EndIf
		If StringLeft($atemp[$i],StringLen("SelectionSummary")) = "SelectionSummary" Then
			$aatemp = StringSplit($atemp[$i],' : ', 1)
			_ArrayAdd($aBackupJobs_Selection, $aatemp[$aatemp[0]])
			$aBackupJobs_Selection[0] = $aBackupJobs_Selection[0] + 1
		EndIf
	Next
	$s_JSONOutput = '{"data":['
	For $i = 1 To $aBackupJobs_byName[0]
		$s_JSONOutput = $s_JSONOutput & @CRLF
		$s_JSONOutput = $s_JSONOutput & "     " & '{' & @CRLF
		$s_JSONOutput = $s_JSONOutput & "          " & '"{#BACKUPEXECJOB}":"' & $aBackupJobs_byName[$i] & '",' & @CRLF
		$s_JSONOutput = $s_JSONOutput & "          " & '"{#BACKUPEXECID}":"' & $aBackupJobs_byID[$i] & '",' & @CRLF
		;$s_JSONOutput = $s_JSONOutput & "          " & '"{#BACKUPEXECSELECTION}":"' & $aBackupJobs_Selection[$i] & '"' & @CRLF
		$s_JSONOutput = $s_JSONOutput & "          " & '"{#BACKUPEXECSELECTION}":"' & "---" & '"' & @CRLF
		$s_JSONOutput = $s_JSONOutput & "     " & '},'
	Next
	$s_JSONOutput = StringTrimRight($s_JSONOutput, 1) & @CRLF & ']}'
	ConsoleWrite($s_JSONOutput & @CRLF)
EndIf

If $CmdLine[0] = 2 Then
	If $CmdLine[1] = "jobstatus" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("JobStatus")) = "JobStatus" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$sJobStatus = $aatemp[$aatemp[0]]
				ConsoleWrite($sJobStatus & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

	If $CmdLine[1] = "jobhowlongago" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("StartTime")) = "StartTime" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$stemp = $aatemp[$aatemp[0]]
				$aDateTemp = StringSplit($stemp, " .")
				; [1] = Tag
				; [2] = Monat
				; [3] = Jahr
				; [4] = Uhrzeit als hh:mm:ss
				$iJobhowlongago = _DateDiff("s", $aDateTemp[3] & "/" & $aDateTemp[2] & "/" & $aDateTemp[1] & " " & $aDateTemp[4], @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC)
				ConsoleWrite($iJobhowlongago & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

	If $CmdLine[1] = "jobbytes" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("TotalDataSizeBytes")) = "TotalDataSizeBytes" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$stemp = $aatemp[$aatemp[0]]
				$iJobBytes = Int($stemp)
				ConsoleWrite($iJobBytes & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

	If $CmdLine[1] = "jobruntime" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("ElapsedTime")) = "ElapsedTime" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$stemp = $aatemp[$aatemp[0]]
				$aRuntimeTemp = StringSplit($stemp,":")
				; [1] = Stunden
				; [2] = Minuten
				; [3] = Sekunden
				$iJobRuntime = Int($aRuntimeTemp[3]) + (Int($aRuntimeTemp[2]) * 60) + (Int($aRuntimeTemp[1]) * 3600)
				ConsoleWrite($iJobRuntime & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

	If $CmdLine[1] = "jobPercentComplete" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("PercentComplete")) = "PercentComplete" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$iJobPercentComplete = $aatemp[$aatemp[0]]
				If $iJobPercentComplete = -1 Then
					$iJobPercentComplete = 0
				EndIf
				ConsoleWrite($iJobPercentComplete & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

	If $CmdLine[1] = "jobErrorCode" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("ErrorCode")) = "ErrorCode" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$iJobErrorCode = $aatemp[$aatemp[0]]
				ConsoleWrite($iJobErrorCode & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

	If $CmdLine[1] = "jobErrorCategory" Then
		$stemp = _BEMCLI(StringReplace($aparameter[3], '{ID of Job}',$CmdLine[2]))
		$atemp = StringSplit($stemp, @CRLF)
		For $i = 1 To $atemp[0]
			If StringLeft($atemp[$i],StringLen("ErrorCategory")) = "ErrorCategory" Then
				$aatemp = StringSplit($atemp[$i],' : ',1)
				$iJobErrorCode = $aatemp[$aatemp[0]]
				ConsoleWrite($iJobErrorCode & @CRLF)
				Exit 0
			EndIf
			If StringInStr($atemp[$i], "Get-BEJob : Cannot find") > 0 Then
				ConsoleWrite("ZBX_NOTSUPPORTED" & @CRLF)
				Exit 0
			EndIf
		Next
	EndIf

EndIf

Exit 0




Kommentare

Loading comments...