Note:
Run as Local System User.
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)
Comments