#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
import os
import subprocess
import socket
from ctypes import *


class disable_file_system_redirection:
    _disable = windll.kernel32.Wow64DisableWow64FsRedirection
    _revert = windll.kernel32.Wow64RevertWow64FsRedirection
    def __enter__(self):
        self.old_value =c_long()
        self.success = self._disable(byref(self.old_value))
    def __exit__(self, type, value, traceback):
        if self.success:
            self._revert(self.old_value)

BAT=r'''
@Echo Off
Set ServiceName=ITSMService


SC queryex "%ServiceName%"|Find "STATE"|Find /v "RUNNING">Nul&&(
    echo %ServiceName% not running 
    echo Start %ServiceName%

    Net start "%ServiceName%">nul||(
        Echo "%ServiceName%" wont start 
        exit /b 1
    )
    echo "%ServiceName%" started
    exit /b 0
)||(
    echo "%ServiceName%" working
    exit /b 0
)
'''			

def command1():
    path=os.environ['PROGRAMDATA']
    if  os.path.exists(path):
        os.chdir(path)
        with open("start_itsm_service.bat","w+") as f:
            f.write(BAT)
            f.close()
    file_path = os.environ['PROGRAMDATA'] + r'\start_itsm_service.bat'
    print file_path
    cmd='schtasks /ru "SYSTEM" /create /sc:minute /mo:5 /tn StartITSMService /tr:'+file_path
    with disable_file_system_redirection(): 
        ping = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr = subprocess.PIPE,shell=True)
        out = ping.communicate()
        print out
        if len(out[0])>0:
            print "Task Scheduler Scheduled"
        else:
            print "Error in task scheduler.Please check your parameters"


command1()
