Usuário com melhor resposta
Lista de grupos/usuarios

Pergunta
-
Boa tarde Pessoal,
Encontrei o script abaixo aqui no fórum mesmo eu entro com a OU e o DC (Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft) e ele me informa os usuários e os grupos a que ele pertence, ele esta me atendendo perfeitamente, porem eu estou com uma nova necessidade, estou querendo, entrando com os mesmos dados, ele me informe o grupo e quais usuários pertencem aquele grupo.
Option Explicit
Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")
strDN = InputBox("Coloque o Caminho da OU" & _
vbCrLf & "(Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft)", , "ou=usuarios,ou=saopaulo,dc=contoso,dc=msft")
If strDN = "" Then WScript.Quit(1) '
Set objContainer = GetObject("LDAP://" & strDN)
objContainer.Filter = Array("user")
For Each objChild In objContainer
set UserObj = GetObject("LDAP://" & objChild.Name & "," & strDN)
if err.number<>0 then
if ChkEngine = "cscript.exe" then
wscript.echo "Erro conectando ao " & strDN & " ou usuário não encontrado."
wscript.quit
else
wscript.quit
end if
end if
List= "Grupos do usuário: " & UserObj.cn & " (" & objChild.Name & ") in " & UCASE(strDN) & VBCRLF & VBCRLF
For Each GroupObj In UserObj.Groups
List = List & GroupObj.Name & VBCRLF
Next
wscript.echo List
OutPutFile.WriteLine List
OutPutFile.WriteLine "===================================================="
Next
OutPutFile.Close
wscript.quit
Function ChkEngine()
ON ERROR RESUME NEXT
strEngine=Wscript.FullName
if Err.Number <>0 then
wscript.echo "Error!"
wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description
wscript.quit
end if
PosX=InStrRev(strEngine,"\",-1,vbTextCompare)
ChkEngine=Mid(strEngine,PosX+1)
End Function
Grato pela atenção
Rodrigo Diniz
Respostas
-
Olá,
Não precisa mudar muito não...
Veja abaixo, se é isso:
Option Explicit
Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")
strDN = InputBox("Coloque o Caminho da OU" & _
vbCrLf & "(Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft)", , "ou=usuarios,ou=saopaulo,dc=contoso,dc=msft")
If strDN = "" Then WScript.Quit(1) '
Set objContainer = GetObject("LDAP://" & strDN)
objContainer.Filter = Array("group")
For Each objChild In objContainer
set UserObj = GetObject("LDAP://" & objChild.Name & "," & strDN)
if err.number<>0 then
if ChkEngine = "cscript.exe" then
wscript.echo "Erro conectando ao " & strDN & " ou usuário não encontrado."
wscript.quit
else
wscript.quit
end if
end if
List= "Grupos do usuário: " & UserObj.cn & " (" & objChild.Name & ") in " & UCASE(strDN) & VBCRLF & VBCRLF
For Each GroupObj In UserObj.Members
List = List & GroupObj.Name & VBCRLF
Next
wscript.echo List
OutPutFile.WriteLine List
OutPutFile.WriteLine "===================================================="
Next
OutPutFile.Close
wscript.quit
Function ChkEngine()
ON ERROR RESUME NEXT
strEngine=Wscript.FullName
if Err.Number <>0 then
wscript.echo "Error!"
wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description
wscript.quit
end if
PosX=InStrRev(strEngine,"\",-1,vbTextCompare)
ChkEngine=Mid(strEngine,PosX+1)
End Function
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta diniz quarta-feira, 29 de abril de 2009 20:11
Todas as Respostas
-
Olá,
Não precisa mudar muito não...
Veja abaixo, se é isso:
Option Explicit
Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
Set OutPutFile = FileSystem.CreateTextFile("Lista_de_Grupos.txt", True)
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")
strDN = InputBox("Coloque o Caminho da OU" & _
vbCrLf & "(Exemplo: ou=usuarios,ou=saopaulo,dc=contoso,dc=msft)", , "ou=usuarios,ou=saopaulo,dc=contoso,dc=msft")
If strDN = "" Then WScript.Quit(1) '
Set objContainer = GetObject("LDAP://" & strDN)
objContainer.Filter = Array("group")
For Each objChild In objContainer
set UserObj = GetObject("LDAP://" & objChild.Name & "," & strDN)
if err.number<>0 then
if ChkEngine = "cscript.exe" then
wscript.echo "Erro conectando ao " & strDN & " ou usuário não encontrado."
wscript.quit
else
wscript.quit
end if
end if
List= "Grupos do usuário: " & UserObj.cn & " (" & objChild.Name & ") in " & UCASE(strDN) & VBCRLF & VBCRLF
For Each GroupObj In UserObj.Members
List = List & GroupObj.Name & VBCRLF
Next
wscript.echo List
OutPutFile.WriteLine List
OutPutFile.WriteLine "===================================================="
Next
OutPutFile.Close
wscript.quit
Function ChkEngine()
ON ERROR RESUME NEXT
strEngine=Wscript.FullName
if Err.Number <>0 then
wscript.echo "Error!"
wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description
wscript.quit
end if
PosX=InStrRev(strEngine,"\",-1,vbTextCompare)
ChkEngine=Mid(strEngine,PosX+1)
End Function
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique- Marcado como Resposta diniz quarta-feira, 29 de abril de 2009 20:11
-