1) Run as Local system user
provide pluggedin time out in minutes at parameter PITO, data type must be string
provide onbattery time out in minutes at parameter OBTO , data type must be string
import ctypes
import os
import re
import subprocess
pluggedIntimeout = itsm.getParameter('PITO') # provide pluggedin time out in minutes, data type must be string
OnBatterytimeout = itsm.getParameter('OBTO') # provide onbattery time out in minutes, data type must be string
SetTimeout = r'''
powercfg -change -monitor-timeout-dc ''' + OnBatterytimeout + r'''
powercfg -change -monitor-timeout-ac ''' + pluggedIntimeout
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)
def getPowerScheme(SchemeList):
for Power in SchemeList:
if "(Ultimate Performance)" in Power:
ultPwr = re.sub('(.+: )(.+)( +\(.+)', r'\2', Power)
ExecuteCmd("powercfg /setactive " + ultPwr)
if "(Ultimate Performance)" in ExecuteCmd("powercfg /GETACTIVESCHEME")[0]:
return True
break
def ExecuteCmd(cmd):
with disable_file_system_redirection():
obj = subprocess.Popen(["powershell", cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = obj.communicate()
return out, err
def CreateScriptFile(ps_content):
try:
file_name = 'ScriptFile.ps1'
file_path = os.path.join(os.environ['TEMP'], file_name)
with open(file_path, 'wb') as wr:
wr.write(ps_content)
wr.close()
return file_path
except:
return None
def SetTimeOut():
ScriptFile = CreateScriptFile(SetTimeout)
if os.path.exists(ScriptFile):
ExecuteCmd('powershell "%s"' % ScriptFile)
os.remove(ScriptFile)
def powerPlans(powerPlan):
PowerS = powerPlan.splitlines()
if getPowerScheme(PowerS):
print " ultimate performance Power plan has been set"
ExecuteCmd('powershell "Set-ExecutionPolicy RemoteSigned"')
SetTimeOut()
else:
print "script execution failed"
def SetUltimatePerf():
powerPlan = ExecuteCmd("powercfg /List")[0]
if "(Ultimate Performance)" in powerPlan:
powerPlans(powerPlan)
else:
powerPlan = ExecuteCmd("powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61")[0]
if "(Ultimate Performance)" in powerPlan:
powerPlan = ExecuteCmd("powercfg /List")[0]
powerPlans(powerPlan)
SetUltimatePerf()
Comments