days = itsm.getParameter('Total_days') #Define the total number of days you want to check
Exclude_list = itsm.getParameter('Exclude_list') # Give the users account name whose account should not be deactivated (e.g) [user1,user2,user3] or if you dont want to exclude any user account just give []
import os 
import subprocess
import re
from datetime import datetime, timedelta,date

cmd = subprocess.Popen("net users",shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
res,err = cmd.communicate()
if err:
    print(err)
else:
    value = re.findall("The command.+",res)
    for i in value :
        val = res.replace(i,"")
    keyword = "-------------------------------------------------------------------------------"
    before_keyword, keyword, after_keyword = val.partition(keyword)
    users = (after_keyword.strip()).split()
    
def user_acc(user):
    cmd_2 = subprocess.Popen('net user'+" "+user+" "+'/active:No' ,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    res_2,err_2 = cmd_2.communicate()
    if err_2:
        print(err_2)
    else:
        print(user+" User account deactivated")

def date_format():
    cmd = subprocess.Popen(["powershell","(Get-Culture).DateTimeFormat"],shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    res,err = cmd.communicate()
    if err:
        print(err)
    else:
        value = re.findall("MonthDayPattern.+",res)[-1]
        keyword = ":"
        before_keyword, keyword, after_keyword = value.partition(keyword)
        value_2 = re.findall("DateSeparator.+",res)[-1]
        word = ":"
        bef_keyword, word, after_keywords = value_2.partition(word)
        return after_keyword.strip(),after_keywords.strip()
date_form,date_sep = date_format()
today = datetime.today()
days_ago = today - timedelta(days=int(days))
start_date = str(days_ago.date()).split("-")
end_date = str(today.date()).split("-")
if  start_date[1][0] == "0":
    start_date[1] = start_date[1].replace("0","")
else:
    pass 
if  start_date[2][0] == "0":
    start_date[2] = start_date[2].replace("0","")
else:
    pass
if  end_date[1][0] == "0":
    end_date[1] = end_date[1].replace("0","")
else:
    pass 
if  end_date[2][0] == "0":
    end_date[2] = end_date[2].replace("0","")
else:
    pass
d1 = date(int(start_date[0]),int(start_date[1]),int(start_date[2]))
d2 = date(int(end_date[0]),int(end_date[1]),int(end_date[2]))

for user in users:
    if user.strip() == "Administrator" or user.strip() == "DefaultAccount" or user.strip() == "Guest" or user.strip() == "WDAGUtilityAccount":
        pass
    elif user.strip() in Exclude_list :
        pass 
    else:
        cmd_1 = subprocess.Popen('net user '+user.strip()+' |findstr "Last logon"' ,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        res_1,err_1 = cmd_1.communicate()
        if err_1:
            print(err_1)
        else:
            log_date = (res_1.split()[2])
            if date_form == "d MMMM" and date_sep == "/" and log_date != "Never": #Date/Month/Year format
                logon_date = (res_1.split()[2]).split("/")
                if  logon_date[0][0] == "0":
                    logon_date[0] = logon_date[0].replace("0","")
                else:
                    pass 
                if  logon_date[1][0] == "0":
                    logon_date[1] = logon_date[1].replace("0","")
                else:
                    pass
                d3 = date(int(logon_date[2]),int(logon_date[1]),int(logon_date[0]))
                if d1 <= d3 <= d2:
                    print(user.strip()+" User account is active for past "+str(days)+" days") 
                else:
                    user_acc(user.strip())
            elif date_form == "d MMMM" and date_sep == "-" and log_date != "Never": #Date/Month/Year format
                logon_date = (res_1.split()[2]).split("-")
                if  logon_date[0][0] == "0":
                    logon_date[0] = logon_date[0].replace("0","")
                else:
                    pass 
                if  logon_date[1][0] == "0":
                    logon_date[1] = logon_date[1].replace("0","")
                else:
                    pass
                d3 = date(int(logon_date[2]),int(logon_date[1]),int(logon_date[0]))
                if d1 <= d3 <= d2:
                    print(user.strip()+" User account is active for past "+str(days)+" days") 
                else:
                    user_acc(user.strip())
            elif date_form == "MMMM d" and date_sep == "/" and log_date != "Never": #Month/Date/Year format
                logon_date = (res_1.split()[2]).split("/")
                if  logon_date[0][0] == "0":
                    logon_date[0] = logon_date[0].replace("0","")
                else:
                    pass 
                if  logon_date[1][0] == "0":
                    logon_date[1] = logon_date[1].replace("0","")
                else:
                    pass
                d3 = date(int(logon_date[2]),int(logon_date[0]),int(logon_date[1]))
                if d1 <= d3 <= d2:
                    print(user.strip()+" User account is active for past "+str(days)+" days") 
                else:
                    user_acc(user.strip())
            elif date_form == "MMMM d" and date_sep == "-" and log_date != "Never": #Month/Date/Year format
                logon_date = (res_1.split()[2]).split("-")
                if  logon_date[0][0] == "0":
                    logon_date[0] = logon_date[0].replace("0","")
                else:
                    pass 
                if  logon_date[1][0] == "0":
                    logon_date[1] = logon_date[1].replace("0","")
                else:
                    pass
                d3 = date(int(logon_date[2]),int(logon_date[0]),int(logon_date[1]))
                if d1 <= d3 <= d2:
                    print(user.strip()+" User account is active for past "+str(days)+" days") 
                else:
                    user_acc(user.strip())
            else:
                user_acc(user.strip())