Usuário com melhor resposta
Validar se existe ou nao e gravar no log

Pergunta
-
Ba galera
Boa tarde.
Gostaria de uma ajuda tche no script abaixo, o mesmo esta pronto para alterar o logon script do usuario em sua conta no AD tche, porem eu gostaria de criar algo nele um If ou alguma outra coisa que valide se o usuario existe, e caso existe ele continue a alteração e grave no log e caso nao exista tche ele grave no log as informações e no lugar do "alterado com sucesso" ele grave "usuario não encontrado", alguem consegue me dar uma força tche.
segue o codigo.
Set objShell = CreateObject("Wscript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") Do While strou="" strou = InputBox ("Digite o nome da OU:","..:: Suporte TI ::..") If VarType(strou) = 0 Then WScript.Quit(1) Loop Do While strls="" strls = InputBox ("Digite o nome do arquivo de logon script:" & vbCrLf & vbCrLf & "Obs. Informe somente o nome sem extenção.","..:: Suporte TI ::..") If VarType(strls) = 0 Then WScript.Quit(1) Loop sFile = "C:\Temp\user.txt" If oFSO.FileExists(sFile) Then Set oFile = oFSO.OpenTextFile(sFile, 1) Do While Not oFile.AtEndOfStream struser = oFile.ReadLine Set objUser = GetObject _ ("LDAP://cn="& struser & ",ou="& strou & ",ou=usuarios,dc=rtv,dc=brasil,dc=local") objUser.Put "scriptPath", strls & ".bat" objUser.SetInfo sLog = "C:\Temp\logscript.log" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile(sLog, 8, True) objTextFile.WriteLine Now & " ; " & strou & " ; " & strls & " ; " & struser & " ; " & "Alterado com Sucesso" objTextFile.Close Loop end if oFile.Close Set objSysInfo = CreateObject("ADSystemInfo") strUser = objSysInfo.UserName Set CurrentUser = GetObject("LDAP://" & objSysInfo.UserName) strFullName = currentuser.displayname Msg = Msg & "Prezado(a) " & strFullName & "," & Chr(10) Msg = Msg & " " & Chr(10) Msg = Msg & "O processo foi executado, favor validar as alterações no arquivo de log." & Chr(10) msgbox msg,64,"..:: Suporte TI ::.."
Respostas
-
Marcelo,
A linha está com a sintaxe errada.
Tente assim:
Set objUser = GetObject (strOU)
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI quarta-feira, 23 de outubro de 2013 19:09
-
Tente mudar isso:
strOU = User_Exist( Inputbox ("Digite o nome do usuário (samaccountname)"))
pra isso:
strUsuario = Inputbox ("Digite o nome do usuário (samaccountname)") strOU = User_Exist( strUsuario )
com isso vc vai ter na variavel strUsuario o samaccountname do usuário.
Agora é só vc colocar esta informação na gravação do arquivo ao invés da strOU.
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI quinta-feira, 24 de outubro de 2013 16:57
Todas as Respostas
-
Verificar se usuário já existe
Fábio de Paula Junior
-
Ba Fabião, neste caso eu teria que usar esta function tche, mas como chama-la no meu codigo e como passar para ela o valor que esta sendo encaminhado para chamada LDAP.?
Function User_Exist(strUserName) Set rootDSE = GetObject("LDAP://RootDSE") domainContainer = rootDSE.Get("defaultNamingContext") Set conn = CreateObject("ADODB.Connection") conn.Provider = "ADSDSOObject" conn.Open "ADs Provider" LDAPStr = "<LDAP://" & DomainContainer & _ ">;(&(objectCategory=User)(samaccountname=" & _ strUserName & "));adspath;subtree" Set rs = conn.Execute(LDAPStr) If rs.RecordCount = 1 Then User_Exist=True else User_Exist=False End If end function
-
Marcelo,
Veja se ajuda mais assim, eu modifiquei a função para ao invés de simplesmente dizer se existe ou não ela agora traz o caminho distinto do usuário (quando volta em branco é porque o usuário não existe). Então agora ao invés de vc ter que informar aquele nome enorme você apenas informa o login do usuário.
Veja esse exemplo de utilização.
strOU = User_Exist( Inputbox ("Digite o nome do usuário (samaccountname)")) if strOU="" then msgbox "Usuário não existe" else msgbox strOU end if Function User_Exist(strUserName) Set rootDSE = GetObject("LDAP://RootDSE") domainContainer = rootDSE.Get("defaultNamingContext") Set conn = CreateObject("ADODB.Connection") conn.Provider = "ADSDSOObject" conn.Open "ADs Provider" LDAPStr = "<LDAP://" & DomainContainer & _ ">;(&(objectCategory=User)(samaccountname=" & _ strUserName & "));adspath;subtree" Set rs = conn.Execute(LDAPStr) If rs.RecordCount = 1 Then User_Exist=rs.fields("adspath").value else User_Exist="" End If end function
Fábio de Paula Junior
- Editado Fábio JrModerator segunda-feira, 21 de outubro de 2013 19:50
-
Ba fabião, bom dia.
Show tche, mas estou com um problema, quando mando para o Set ObjUser = GetObject o caminho Ldap coletado pela strOU, ele responde que o numero de argumentos incorreto ou atribuição de propriedade invalida: 'GetObject' Code: 800A01C2.
Obrigado tche.
O codigo ficou assim tche.
Set objShell = CreateObject("Wscript.Shell")
strOU = User_Exist( Inputbox ("Digite o nome do usuário (samaccountname)")) if strOU="" then sLog = "C:\Temp\logscript.log" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile(sLog, 8, True) objTextFile.WriteLine Now & " ; " & strOU & " ; " & "Usuário não existe" objTextFile.Close Else msgbox strOU Set objUser = GetObject _ & strOU objUser.Put "scriptPath", "teste1234.bat" objUser.SetInfo sLog = "C:\Temp\logscript.log" Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile(sLog, 8, True) objTextFile.WriteLine Now & " ; " & strou & " ; " & "Alterado com Sucesso" objTextFile.Close end If Function User_Exist(strUserName) Set rootDSE = GetObject("LDAP://RootDSE") domainContainer = rootDSE.Get("defaultNamingContext") Set conn = CreateObject("ADODB.Connection") conn.Provider = "ADSDSOObject" conn.Open "ADs Provider" LDAPStr = "<LDAP://" & DomainContainer & _ ">;(&(objectCategory=User)(samaccountname=" & _ strUserName & "));adspath;subtree" Set rs = conn.Execute(LDAPStr) If rs.RecordCount = 1 Then User_Exist=rs.fields("adspath").value else User_Exist="" End If end function
- Editado Marcelo TI terça-feira, 22 de outubro de 2013 11:35
-
Marcelo,
A linha está com a sintaxe errada.
Tente assim:
Set objUser = GetObject (strOU)
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI quarta-feira, 23 de outubro de 2013 19:09
-
-
Ba Fabião só mas uma pergunta tche, a escrita do log esta ok sem erros, porem quando o usuario esta errado ou nao existe no txt o campo aonde vai o id do funcionario nao esta gravando ele esta indo em branco, teria algo que eu pudesse fazer ?
Obrigado.
-
Tente mudar isso:
strOU = User_Exist( Inputbox ("Digite o nome do usuário (samaccountname)"))
pra isso:
strUsuario = Inputbox ("Digite o nome do usuário (samaccountname)") strOU = User_Exist( strUsuario )
com isso vc vai ter na variavel strUsuario o samaccountname do usuário.
Agora é só vc colocar esta informação na gravação do arquivo ao invés da strOU.
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI quinta-feira, 24 de outubro de 2013 16:57
-