import os import sys import _winreg def alert(arg): sys.stderr.write("%d%d%d" % (arg, arg, arg)) # Please use "alert(1)" to turn on the monitor(trigger an alert) # Please use "alert(0)" to turn off the monitor(disable an alert) # Please do not change above block and write your script below # -*- coding: utf-8 -*- import os import ctypes PATH = os.environ['PROGRAMDATA'] Filename = PATH + "\\"+"DISKERROR.ps1" 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(): os.chmod(PATH,0644) os.chdir(PATH) with open(Filename,"w+") as de: de.write( """# Get FQDN $sysinfo = Get-WmiObject -Class Win32_ComputerSystem $c = $sysinfo.Name $d = $sysinfo.Domain $a = $c + "." + $d #Get Event Logs get-EventLog system | where {$_.entrytype -Match "Error" -and $_.source -match "disk"} |FT -Autosize | out-File (".\" + $a + "_DiskDiag.txt") $Log = get-Content (".\" + $a + "_DiskDiag.txt") | select-Object -first 50 $Errors = get-EventLog system | where {$_.entrytype -Match "Error" -and $_.source -match "disk"} | select-Object -first 50 if ($Errors -eq $null){ Write-Host $a + "No issues" Exit 0 } else { Write-Host $a + "Disk Errors Found" Exit 1001 }""" ) os.chdir(PATH) disk_error = os.popen("Powershell.exe " + Filename).read() print disk_error if "Errors" in disk_error: print "Issues found" alert(1) else: print "No Issues" alert(0)