none
Validar se existe ou nao e gravar no log RRS feed

  • 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 ::.."

    segunda-feira, 21 de outubro de 2013 18:10

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
    quarta-feira, 23 de outubro de 2013 12:14
    Moderador
  • 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
    quinta-feira, 24 de outubro de 2013 15:21
    Moderador

Todas as Respostas

  • 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


    segunda-feira, 21 de outubro de 2013 18:36
  • 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


    segunda-feira, 21 de outubro de 2013 19:49
    Moderador
  • 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
    terça-feira, 22 de outubro de 2013 10:28
  • 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
    quarta-feira, 23 de outubro de 2013 12:14
    Moderador
  • Ba sou um cabeção mesmo tche.
    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.

    quarta-feira, 23 de outubro de 2013 19:26
  • 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
    quinta-feira, 24 de outubro de 2013 15:21
    Moderador
  • Ba tche, show obrigado fabião.
    quinta-feira, 24 de outubro de 2013 16:57