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)