Usuário com melhor resposta
Extraindo informações de Usuarios do ad

Pergunta
-
Pessoal,
estou precisando de um script que extraia todas as informações dos usuarios da minha OU como por exemplo:
Nome, email, ultimo logon, se a senha esta setada para expirar, se a conta vai expirar, todas as informações relacionadas a logon.
mas a minha OU de users fica abaixo desta hierarquia: Global - Brazil - Campinas - User Accounts
se alguem puder me ajudar tenho este script como base.
Set objCommand.ActiveConnection = objConnectionobjCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREEobjCommand.CommandText = _
"SELECT name,description,distinguishedname,instanceType FROM 'LDAP://dc=xxx,dc=xxx,dc=xxx' " & _
"WHERE objectCategory='User'"Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
nome = objRecordSet.Fields("name").Value
descricao = objRecordSet.Fields("description").Value
cn = objRecordSet.Fields("distinguishedname").Value
Set objUser = GetObject("LDAP://" & cn)
Set objLastLogon = objUser.Get("lastLogon")
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440OutPutFile.WriteLine nome & ";" & cn & ";" & int(intLastLogonTime + #1/1/1601#)
objRecordSet.MoveNext
Loop
anderson silva
Respostas
-
Olá,
Verifique o exemplo abaixo:
set FSo = CreateObject("Scripting.FileSystemObject")
'Coloque aqui a pasta para a qual os arquivos serão copiados
strLog = "log-ad.txt"
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "OU=Brazil,OU=Campinas," & objDSE.Get("defaultNamingContext")
strDN = InputBox("Coloque o distinguished name do container" & _
vbCrLf & "(Ex.: " & strDefaultDN & ")", , strDefaultDN)
If strDN = "" Then WScript.Quit(1)
Set objContainer = GetObject("LDAP://" & strDN)
Set ArqLog = FSO.OpenTextFile(strLog, 8, True, 0)
objContainer.Filter = Array("user")
ArqLog.WriteLine VBCRLF
ArqLog.WriteLine "==================================================="
ArqLog.WriteLine "USUARIOS LISTADOS EM: " & now
ArqLog.WriteLine "==================================================="
ArqLog.WriteLine VBCRLF
For Each objChild In objContainer
set objUser = GetObject("LDAP://" & objChild.Name & "," & strDN)
strUsuario = objUser.name
strDescricao = objUser.description
strCN = objUser.cn
Set objLastLogon = objUser.Get("lastLogon")
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
ArqLog.WriteLine strUsuario & ";" & strCN & ";" & int(intLastLogonTime + #1/1/1601#)
Next
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
-
Olá,
Você colocou assim:
OU=Global,OU=Brazil,OU=Campinas Apg,OU=User
Acredito que a ou User está dentro de Campinas, que está dentro de brasil, correto?
Então o correto seria:
OU=User,OU=Campinas Apg,OU=Brazil,OU=Global,DC=SEUDOMINIO,DC=COM,DC=BR
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
-
Olá,
altere a linha:
shell.run "xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y"
Para:
shell.run ("xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y",1,TRUE)
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta silvanderson quinta-feira, 29 de outubro de 2009 16:54
Todas as Respostas
-
Olá,
Verifique o exemplo abaixo:
set FSo = CreateObject("Scripting.FileSystemObject")
'Coloque aqui a pasta para a qual os arquivos serão copiados
strLog = "log-ad.txt"
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "OU=Brazil,OU=Campinas," & objDSE.Get("defaultNamingContext")
strDN = InputBox("Coloque o distinguished name do container" & _
vbCrLf & "(Ex.: " & strDefaultDN & ")", , strDefaultDN)
If strDN = "" Then WScript.Quit(1)
Set objContainer = GetObject("LDAP://" & strDN)
Set ArqLog = FSO.OpenTextFile(strLog, 8, True, 0)
objContainer.Filter = Array("user")
ArqLog.WriteLine VBCRLF
ArqLog.WriteLine "==================================================="
ArqLog.WriteLine "USUARIOS LISTADOS EM: " & now
ArqLog.WriteLine "==================================================="
ArqLog.WriteLine VBCRLF
For Each objChild In objContainer
set objUser = GetObject("LDAP://" & objChild.Name & "," & strDN)
strUsuario = objUser.name
strDescricao = objUser.description
strCN = objUser.cn
Set objLastLogon = objUser.Get("lastLogon")
intLastLogonTime = objLastLogon.HighPart * (2^32) + objLastLogon.LowPart
intLastLogonTime = intLastLogonTime / (60 * 10000000)
intLastLogonTime = intLastLogonTime / 1440
ArqLog.WriteLine strUsuario & ";" & strCN & ";" & int(intLastLogonTime + #1/1/1601#)
Next
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
-
-
-
-
Olá,
Você colocou assim:
OU=Global,OU=Brazil,OU=Campinas Apg,OU=User
Acredito que a ou User está dentro de Campinas, que está dentro de brasil, correto?
Então o correto seria:
OU=User,OU=Campinas Apg,OU=Brazil,OU=Global,DC=SEUDOMINIO,DC=COM,DC=BR
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta silvanderson quarta-feira, 28 de outubro de 2009 18:05
-
-
Olá,
Para a data de expiração da conta, dá uma olhada no link abaixo:
http://jesielsp.spaces.live.com/blog/cns!F3106FA526E9FB33!181.entry
Você pode ver nas propriedades do schema ou com o adsiedit (support tools)
http://www.microsoft.com/downloads/details.aspx?FamilyID=49ae8576-9bb9-4126-9761-ba8011fabf38&displaylang=en
Até mais,
Jesiel
Obs.: Se útil, classifique
-
-
-
Jesiel,
tenho um outro script que realiza a copia de um arquivo via vpn para o meu servidor e coloquei a instrução wscript.echo "Concluido com Sucesso!" depois da instrução de copia, mas a menssagem aparece antes de terminar a copia. Que função eu posso utilizar para que ele aguarde o termino da copia.
origem = "\\CPSFMC-S003\Inventario\inventario"
destino = "c:\"Set objCommand = CreateObject("ADODB.Command")
set objshell = createobject("wscript.shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
set FSO = createobject("scripting.filesystemobject")
set shell = createobject("wscript.shell")if FSO.folderexists("C:\Inventario") = False then
objFSO.CopyFolder origem , destino , OverWriteFiles
End ifobjshell.run "C:\inventario\AsystInventarioHardware.exe"
objshell.run "C:\inventario\AsystInventarioSoftware.exe"shell.run "xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y"
wscript.echo "Arquivo Copiado com Sucesso. Obrigado!!!"
Sem mais,
anderson silva
-
Olá,
altere a linha:
shell.run "xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y"
Para:
shell.run ("xcopy C:\Inventario\INV\*.inv \\CPSFMC-S003\INVENTARIO\INV /s /e /y",1,TRUE)
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta silvanderson quinta-feira, 29 de outubro de 2009 16:54