Este template mostra diversas formas e traz opções também para criação de usuários em um domínio windows ….
‘****************************************************************************************************************************
‘****************************************************************************************************************************
‘***** Script criado por: Rodolfo Angelino Rodrigues
‘***** Data: 16/04/2008
‘****************************************************************************************************************************
‘****************************************************************************************************************************
Option Explicit
On Error resume Next
Dim WshNetwork, WshShell, objEmail
Dim hostName, home_path, objUser, intUAC
Dim user_id, psswd, compl, oArgs, ArgNum, resultado
Dim home_path, action, descr, objOU, help
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Set WshNetwork = WScript.CreateObject(”WScript.Network”)
Set WshShell = CreateObject(”WScript.Shell”)
Set objEmail = CreateObject(”CDO.Message”)
Set oArgs = WScript.Arguments
ArgNum = 0
hostName = WshNetwork.ComputerName
While ArgNum < oArgs.Count
Select Case LCase(oArgs(ArgNum))
Case “–action”,”-a”: ‘ 1 = adiciona , 2 = desabilitar , 3 = reativa , 4 = remove e 5 = resseta a senha
ArgNum = ArgNum + 1
action = oArgs(ArgNum)
Case “–user_id”,”-u”:
ArgNum = ArgNum + 1
user_id = oArgs(ArgNum)
Case “–psswd”,”-s”:
ArgNum = ArgNum + 1
psswd = oArgs(ArgNum)
Case “–compl”,”-d”:
ArgNum = ArgNum + 1
compl = oArgs(ArgNum)
Case Else:
End Select
ArgNum = ArgNum + 1
Wend
home_path = “X:\users\” & user_id
Select Case action
Case 1
If (user_id = “”) Or (psswd = “”) Then
if (user_id = “”) then
WScript.Echo “Campo user_id em branco”
else
WScript.Echo “Campo PASSWORD em braco”
end if
WScript.Quit
Else
Call CriaUsuario(user_id, psswd, home_path, compl)
End If
Case 2
If user_id = “” Then
WScript.Echo “Campo user_id em branco”
WScript.Quit
Else
Call desabilitaUsuario(user_id)
End if
Case 3
If user_id = “” Then
WScript.Echo “Campo user_id em branco”
WScript.Quit
Else
Call reativaUsuario(user_id)
End if
Case 4
If user_id = “” Then
WScript.Echo “Campo user_id em branco”
WScript.Quit
Else
Call removeUsuario(user_id)
End If
Case 5
If (user_id = “”) Or (psswd = “”) Then
if (user_id = “”) then
WScript.Echo “Campo user_id em branco”
else
WScript.Echo “Campo PASSWORD em braco”
end if
WScript.Quit
Else
Call resSenha(user_id, psswd)
End If
Case Else:
WScript.Echo “Nenhum Argumento foi passado!!”
Call DisplayUsage
WScript.Quit
End Select
WScript.Echo descr
‘*******************************************************************************************************************************************************
”*** Criando Usuário **********************************************************************************************************************************
‘*******************************************************************************************************************************************************
Sub CriaUsuario(user_id, WebPasswd, home_path, compl)
On Error resume Next
Err.Clear
Set objOU = GetObject(”LDAP://OU=www,dc=azeroth,dc=com,dc=br”)
Set objUser = objOU.Create(”User”, “cn=”&user_id)
Err.Clear
objUser.Put “sAMAccountName”, user_id
objUser.SetInfo
If Err.number <> 0 Then
WScript.Echo “Usuário já exite…”
WScript.Quit
End If
intUAC = objUser.Get(”userAccountControl”)
objUser.Put “userAccountControl”, intUAC XOR ADS_UF_DONT_EXPIRE_PASSWD ‘Aqui ele seta a opção para senha não expirar
objUser.SetInfo
Err.Clear
objUser.SetPassword(WebPasswd)
If Err.number <> 0 Then
WScript.Echo “Senha não é complexa por favor informar novamente…” ‘ Neste caso existe uma GPO que exige complexibilidade de senha
Set objUser = objOU.Delete(”User”, “cn=”&user_id)
objUser.SetInfo
WScript.Quit
End If
Err.clear
objUser.FullName = user_id
objUser.HomeDirectory = home_path
objUser.AccountExpirationDate = “01/01/1970″ ‘ Esta data é para que a conta nunca expire
objUser.AccountDisabled = False
objUser.Description = compl
objUser.SetInfo
If Err.number <> 0 Then
resultado = “Houve erro na ativação do usuário: “&user_id&” : “&Err.Description&” : “&CStr(Err.Number)
Call Send_Mail(resultado)
Set objUser = objOU.Delete(”User”, “cn=”&user_id)
objUser.SetInfo
WScript.Echo resultado
WScript.Quit
End If
descr = “Criação de usuário realizada com sucesso!”
End Sub
‘*******************************************************************************************************************************************************
”*** Desabilitando o usuário **************************************************************************************************************************
‘******************************************************************************************************************************************************
Sub desabilitaUsuario(user_id)
On Error Resume Next
Err.Clear
Set objUser = GetObject(”WinNT://AZEROTH/” & user_id)
If Err.number <> 0 then
msg = “Falha na suspensão do usúario o mesmo já se encontra suspenso…”&user_id
WScript.Echo msg
Call Send_Mail(msg)
WScript.Quit
End If
Err.Clear
objUser.AccountDisabled = TRUE
objUser.SetInfo
If Err.number <> 0 then
msg = “Falha na suspensão do usúario o mesmo não foi encontrado…”&user_id
WScript.Echo msg
Call Send_Mail(msg)
WScript.Quit
End If
descr = “Suspensão de usuário realizada com sucesso!”
End Sub
‘*******************************************************************************************************************************************************
”*** Reativando o usuário **************************************************************************************************************************
‘******************************************************************************************************************************************************
Sub reativaUsuario(user_id)
On Error Resume Next
Err.Clear
Set objUser = GetObject(”WinNT://AZEROTH/” & user_id)
If Err.number <> 0 then
msg = “Falha na reativação do usúario o mesmo já se encontra ativo…”&user_id
WScript.Echo msg
Call Send_Mail(msg)
WScript.Quit
End If
Err.Clear
objUser.AccountDisabled = FALSE
objUser.SetInfo
If Err.number <> 0 then
msg = “Falha na reativação do usúario o mesmo não foi encontrado…”&user_id
WScript.Echo msg
Call Send_Mail(msg)
WScript.Quit
End If
descr = “reativação de usuário realizada com sucesso!”
End Sub
‘*******************************************************************************************************************************************************
‘*** Remoção de usuário ********************************************************************************************************************************
‘*******************************************************************************************************************************************************
Sub removeUsuario(user_id)
On Error Resume Next
Set objOU = GetObject(”LDAP://OU=www,dc=azeroth,dc=com,dc=br”)
Err.Clear
Set objUser = objOU.Delete(”User”, “cn=”&user_id)
If Err.number <> 424 then
msg = “Falha na remoção do usúario o mesmo já foi removido ou não foi encontrado…”&user_id
WScript.Echo msg
Call Send_Mail(msg)
WScript.Quit
End If
descr = “Remoção de usuário realizada com sucesso!”
End Sub
‘*******************************************************************************************************************************************************
‘*** Resset de Senha ***********************************************************************************************************************************
‘*******************************************************************************************************************************************************
Sub resSenha(user_id,PasWd)
On Error resume Next
Err.Clear
Set objUser = GetObject(”WinNT://AZEROTH/” & user_id)
objUser.SetPassword(PasWd)
objUser.SetInfo
If Err.number <> 0 then
msg = “Falha falha no resset de senha do usuário…”&user_id
WScript.Echo msg
Call Send_Mail(msg)
WScript.Quit
End If
descr = “Resset de senha realizada com sucesso!”
End Sub
‘*******************************************************************************************************************************************************
‘*******************************************************************************************************************************************************
‘*** Função de envio de e-mail
Sub Send_Mail(sDescricao)
On Error Resume Next
Set objEMail = CreateObject(”CDO.Message”)
objEmail.To = “gerencia@azeroth.com.br”
objEmail.From = “servidor@azeroth.com.br”
objEmail.Subject = “Alerta!: Script user.vbs - ” & hostName
objEmail.TextBody = sDescricao
objEmail.Send
Set objEMail = Nothing
End Sub
‘*******************************************************************************************************************************************************
‘*******************************************************************************************************************************************************
Sub DisplayUsage
WScript.Echo “########################################################”
WScript.Echo “Para chamada do help digite no prompt user.vbs -h >”
WScript.Echo ” <–Ação | -a Ação de criação, suspensão e etc… >”
WScript.Echo ” <–Usuário | -u Usuário de logon >”
WScript.Echo ” <–Senha | -s Senha do usuário >”
WScript.Echo ” <–Descrição | -d domínio ou descrição da conta >”
WScript.Echo ” <Exemplo: user.vbs -a 1 -u teste -s 123mudar -d teste >”
WScript.Echo “########################################################”
WScript.Quit (1)
End Sub
‘*******************************************************************************************************************************************************
‘*******************************************************************************************************************************************************