Usuário com melhor resposta
Listar expiração de conta

Pergunta
-
Olá pessal,
Fiz esse script para listar a data de expiração da conta do usuário, mas está dando erro para mostrar o campo de expiração... O que pode estar errado.
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
dim XLOGINXLOGIN=wScript.Arguments.Item(0)
set objFso=CreateObject("Scripting.FileSystemObject")objcommand.CommandText = _
"SELECT adspath,displayName,cn,givenName,sn, SAMAccountName FROM 'LDAP://domaincontroler,DC=dominio' WHERE objectCategory='User' and samaccountname='"&XLOGIN&"'"Set objRecordSet = objCommand.Execute
wscript.echo "Usuário :" & objRecordSet.Fields("samaccountname")
wscript.echo "CN :" & objRecordSet.Fields("cn")
wscript.echo "displayName :" & objRecordSet.Fields("displayName")
Wscript.echo "Expiração :" & objRecordSet.Fields("AccountExpires")
Respostas
-
Aqui só pra constar, script pra trazer a expiração de todos os usuários do domínio....
Set rootDSE=GetObject("LDAP://RootDSE") domainContainer = rootDSE.Get("defaultNamingContext") Set domainObject = GetObject("LDAP://" & domainContainer) Set fs = CreateObject ("Scripting.FileSystemObject") Set userFile = fs.OpenTextFile ("c:\usersExpire.csv",8,True) For Each obj in domainObject if instr(lcase(obj.ADsPath),"system")=0 then select case(obj.Class) case "user" GetUsers(obj.ADsPath) case "organizationalUnit" GetOu(obj.ADsPath) case "container" GetOu(obj.ADsPath) end select end if Next sub GetUsers(path) set objUser = GetObject(path) On Error Resume Next dtmAccountExpiration = objUser.AccountExpirationDate If Err.Number = -2147467259 Or dtmAccountExpiration = "1/1/1970" Then texto = "Usuário: " & objUser.displayName & " - Sem data de expiração marcada" Else texto = "Usuário: " & objUser.displayName & " - Expira em: " & objUser.AccountExpirationDate End If userFile.WriteLine texto err.clear end sub sub GetOu(path) set oOu = GetObject(path) for each user in oOu select case(user.Class) case "user" GetUsers(user.ADsPath) case "organizationalUnit" GetOu(user.ADsPath) case "container" GetOu(obj.ADsPath) end select next end sub msgbox "terminou" wscript.quit
=D
Se ajudar, não esqueça de classificar.....
o.0
- Editado Fábio JrModerator domingo, 17 de junho de 2012 16:58 Formatado o código
- Marcado como Resposta Fábio JrModerator domingo, 17 de junho de 2012 16:58
Todas as Respostas
-
Luiz, tente com esse script aki....
Mude o cn=users, se vc tiver os usuários em alguma OU.... então exemplo.. OUGerentes, ou=ougerentes
Code SnippetOn Error Resume Next
Set rootDSE=GetObject("LDAP://RootDSE")
domainContainer = rootDSE.Get("defaultNamingContext")
xlogin = wscript.arguments.item(0)
Set objUser = GetObject("LDAP://cn="&xlogin&",cn=users,"&domainContainer)dtmAccountExpiration = objUser.AccountExpirationDate
If Err.Number = -2147467259 Or dtmAccountExpiration = "1/1/1970" Then
wscript.echo "Usuário: " & objUser.UserName
wscript.Echo "Sem data de expiração marcada"
Else
wscript.echo "Usuário: " & objUser.UserName
wscript.Echo "Expira em: " & objUser.AccountExpirationDate
End IfTesta e diz ai se funfou...
E se ajudar, naõ esqueça de classificar....
o.0
-
Aqui só pra constar, script pra trazer a expiração de todos os usuários do domínio....
Code SnippetSet rootDSE=GetObject("LDAP://RootDSE")
domainContainer = rootDSE.Get("defaultNamingContext")
Set domainObject = GetObject("LDAP://"&domainContainer")
Set fs = CreateObject ("Scripting.FileSystemObject")
Set userFile = fs.OpenTextFile ("c:\usersExpire.csv",8,True)For Each obj in domainObject
if instr(lcase(obj.ADsPath),"system")=0 then
select case(obj.Class)
case "user"
GetUsers(obj.ADsPath)
case "organizationalUnit"
GetOu(obj.ADsPath)
case "container"
GetOu(obj.ADsPath)
end select
end if
Nextsub GetUsers(path)
set objUser = GetObject(path)
On Error Resume NextdtmAccountExpiration = objUser.AccountExpirationDate
If Err.Number = -2147467259 Or dtmAccountExpiration = "1/1/1970" Then
texto = "Usuário: " & objUser.displayName & " - Sem data de expiração marcada"
Else
texto = "Usuário: " & objUser.displayName & " - Expira em: " & objUser.AccountExpirationDate
End IfuserFile.WriteLine texto
err.clear
end subsub GetOu(path)
set oOu = GetObject(path)
for each user in oOu
select case(user.Class)
case "user"
GetUsers(user.ADsPath)
case "organizationalUnit"
GetOu(user.ADsPath)
case "container"
GetOu(obj.ADsPath)
end select
next
end submsgbox "terminou"
wscript.quit=D
Se ajudar, não esqueça de classificar.....
o.0
-
Aqui só pra constar, script pra trazer a expiração de todos os usuários do domínio....
Set rootDSE=GetObject("LDAP://RootDSE") domainContainer = rootDSE.Get("defaultNamingContext") Set domainObject = GetObject("LDAP://" & domainContainer) Set fs = CreateObject ("Scripting.FileSystemObject") Set userFile = fs.OpenTextFile ("c:\usersExpire.csv",8,True) For Each obj in domainObject if instr(lcase(obj.ADsPath),"system")=0 then select case(obj.Class) case "user" GetUsers(obj.ADsPath) case "organizationalUnit" GetOu(obj.ADsPath) case "container" GetOu(obj.ADsPath) end select end if Next sub GetUsers(path) set objUser = GetObject(path) On Error Resume Next dtmAccountExpiration = objUser.AccountExpirationDate If Err.Number = -2147467259 Or dtmAccountExpiration = "1/1/1970" Then texto = "Usuário: " & objUser.displayName & " - Sem data de expiração marcada" Else texto = "Usuário: " & objUser.displayName & " - Expira em: " & objUser.AccountExpirationDate End If userFile.WriteLine texto err.clear end sub sub GetOu(path) set oOu = GetObject(path) for each user in oOu select case(user.Class) case "user" GetUsers(user.ADsPath) case "organizationalUnit" GetOu(user.ADsPath) case "container" GetOu(obj.ADsPath) end select next end sub msgbox "terminou" wscript.quit
=D
Se ajudar, não esqueça de classificar.....
o.0
- Editado Fábio JrModerator domingo, 17 de junho de 2012 16:58 Formatado o código
- Marcado como Resposta Fábio JrModerator domingo, 17 de junho de 2012 16:58
-
Tem um erro...
Nessa linha:
Set domainObject = GetObject("LDAP://"&domainContainer")
Tem que tirar um "
Set domainObject = GetObject("LDAP://"&domainContainer)
Thomas Edson Mattos Roeder