import os 
import subprocess
import ctypes

print("Checking Smart status drive....\n")
smart_status = os.popen('wmic diskdrive get model, status').read()
print(smart_status)
print('\n')

print("Checking Health Status of the Hard Disk...\n")
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 = subprocess.Popen('chkdsk', shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
    out, err = obj.communicate()
    if err:
    	print(err)
    else:
    	print(out)

ps_content = r'''function Get-Temperature {
    $t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
    $returntemp = @()

    foreach ($temp in $t.CurrentTemperature)
    {


    $currentTempKelvin = $temp / 10
    $currentTempCelsius = $currentTempKelvin - 273.15

    $currentTempFahrenheit = (9/5) * $currentTempCelsius + 32

    $returntemp += $currentTempCelsius.ToString() + " C : " + $currentTempFahrenheit.ToString() + " F : " + $currentTempKelvin + "K"  
    }
    return $returntemp
}

Get-Temperature'''
print("Checking CPU Temperature...")
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 = subprocess.Popen(command, shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
        out, err = obj.communicate()
        if err:
            print(err)
        else:
        	print(out)
file_name='Temperature.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"')
ecmd('powershell "%s"'%file_path)


def spooler(command):
	obj = subprocess.Popen(command, shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
	out, err = obj.communicate()
	if err:
		print(err)
	else:
		print(out)
		return "Success"

print("Stopping print spooler...")
stop = spooler('net stop spooler')
if stop == "Success":
	print("Clearing print spooler...")
	clear = spooler('del %systemroot%\System32\spool\printers* /Q')
	if clear == "Success":
		print("Starting print spooler...")
		start = spooler('net start spooler')
	else:
		print("Error occurred while clearing...")
else:
	print("Error occurred while stopping...") 