#To define a particular parameter, replace the 'parameterName' inside itsm.getParameter('parameterName') with that parameter's name
Drive=itsm.getParameter('Drive')  ##Enter the Drive you want to encrypt eg: D:
emailto=itsm.getParameter('EmailTo')  ## Provide an Toemail address where the mail need to be sent.You can also provide any number of To eamil address For example: ['varun@yopmail.com', xxxx@yopmail.com]
emailfrom=itsm.getParameter('EmailFrom')  ## Provide the From Email address from which the mail to be send
password=itsm.getParameter('Password')               ##Provide password for from email
smtpserver='smtp.gmail.com'
port=587

import os,sys,shutil,re,sys,socket,_winreg,random,getpass
from datetime import date, datetime
import socket
import smtplib
import mimetypes
from email.mime.multipart import MIMEMultipart
from email import encoders
from email.message import Message
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.text import MIMEText

def computername():
    return os.environ['COMPUTERNAME']

def ipaddress():
    return socket.gethostbyname(socket.gethostname())

subject='%s %s Alert : Bitloker Recovery Key for Drive %s!!!!!'%(computername(), ipaddress(), Drive)		

def emailreport(subject, emailto,emailfrom,password,smtpserver,port,msgbody):
    msg = MIMEMultipart()
    msg["From"] = emailfrom
    msg["To"] = ",".join(emailto)
    msg["Subject"] = subject
    msg.preamble = subject
    body = MIMEText(msgbody)
    msg.attach(body)       
    try:
        server = smtplib.SMTP(smtpserver,port)
        server.ehlo()
        server.starttls()
        server.login(emailfrom, password)
        server.sendmail(emailfrom, emailto, msg.as_string())
        server.quit()
        return " \nThe email report has been sent to "+msg["To"]
    except Exception as e:
        return e

import ctypes
import re
import os

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)

import subprocess
save="C:" ##Enter the Drive you want to save the recovery key
path = 'C:\\Windows\\System32\\manage-bde.exe -status '+Drive
with disable_file_system_redirection():
    process=subprocess.Popen((path),shell=True,stdout=subprocess.PIPE);
result=process.communicate()[0]

protect=re.findall("Lock Status:          (.*)",result)
pro="".join(protect)
y=[]
xx=[]
k=[]

if "Unlocked" in pro:
    print "Drive "+Drive+" is now in locked state"
    ps_command=r'manage-bde -on '+Drive+' -RecoveryKey '+save+' -RecoveryPassword'
    
    with disable_file_system_redirection():
        c=os.popen('powershell "%s"'%ps_command).read()
        y=c.split('\n')
        
        for i in range(len(y)):
            if re.findall('ACTIONS REQUIRED:(.*)',y[i]):
                j=i
                for yy in y[j:]:
                    k.append(yy)
msgbody = ''
for i in k:
    print i
    msgbody += i + '\n'

if k:
    print emailreport(subject,emailto,emailfrom,password,smtpserver,port,msgbody)
