Avatar billede bigilo Nybegynder
11. oktober 2005 - 15:21 Der er 18 kommentarer og
1 løsning

Kan ikke se om AD konto er låst, men kan godt sætte det

Hej Eksperter

Er ved at lave et lille script, som ser om en konto er låst.
Men problemet er bare at jeg ikke kan få det til at virke...

Jeg kan godt låse den op. Men værdien af objUser.ISAccountLocked bliver ved med at være false, lige meget om kontoen er låst eller ej.
Jeg skulle have redighederne til at se det, da jeg som sagt godt kan låse op.

Her er min kode:
************************************************
Set objTrans =CreateObject("NameTranslate")
objTrans.Set 3, "Elsam\" & "inboxtest"
strUserDN = objTrans.Get(1)
Set objUser = GetObject("LDAP://" & strUserDN)
If objuser.ISAccountLocked = True then
    Wscript.echo "Is Locked"
else
    Wscript.echo "Not Locked"
end if
**************************************************

Er der nogen der kan se hvad der er galt?, eller måske kender en anden måde at gøre det på?

På forhånd tak
Avatar billede medions Nybegynder
11. oktober 2005 - 15:42 #1
Prøv evt.:

Set objTrans =CreateObject("NameTranslate")
objTrans.Set 3, "Elsam\" & "inboxtest"
strUserDN = objTrans.Get(1)
Set objUser = GetObject("LDAP://" & strUserDN)
If CBool(objuser.ISAccountLocked) = 1 then
    Wscript.echo "Is Locked"
else
    Wscript.echo "Not Locked"
end if

//>Rune
Avatar billede bigilo Nybegynder
11. oktober 2005 - 15:46 #2
Det hjalp desværre ikke...
Giver samme resultat
Avatar billede killerclown Nybegynder
11. oktober 2005 - 15:46 #3
En anden måde kunne være, denne. Den virker lidt psykopat, men det er fordi jeg godt kan lide at lave scripts, der kan bruges flere steder uden ændringer :o)
Denne kan køres alle steder, der er installeret en AD :

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTDomain")
For Each objItem In colItems
strdomainnamearray = split(objItem.DnsForestName,".")
strdomaintext = "dc="
For a = 0 To UBound(strdomainnamearray)
        if a = 0 Then
        strdomaintext = strdomaintext & strdomainnamearray(a)
        Else
        strdomaintext = strdomaintext & ",dc=" & strdomainnamearray(a)
        End If
Next
    domainalmnavn = objItem.Name
Next
Const ADS_SCOPE_SUBTREE = 2
    strinitialer = InputBox("indtast initialer")
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =  CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    objCommand.CommandText = _
        "SELECT distinguishedName FROM 'LDAP://" & strdomaintext & "' WHERE objectCategory='user' " & _
        "AND sAMAccountName='" & strinitialer & "'"
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        strobjekt = objRecordSet.Fields("distinguishedName").Value
        objRecordSet.MoveNext
    Loop
    if err.number = 3021 Then
      WScript.echo "Brugeren findes ikke"
    WScript.Quit
    end If
    Set usr = GetObject("LDAP://" & strobjekt)
    If usr.ISAccountLocked Then
  WScript.echo "Is Locked"
Else
    WScript.echo "Not Locked"
End If


/Killer
Avatar billede bigilo Nybegynder
11. oktober 2005 - 15:48 #4
killer -> Giver jo det samme resultat. det er jo stadig samme måde du henter oplysningen på
Avatar billede killerclown Nybegynder
11. oktober 2005 - 15:54 #5
Jeg kan se, jeg har skrevet samtidig med medions :o)
Det er bare den måde, jeg plejer, at gøre det på.

Har du prøvet det af ?

Hva' faen. Er du tilbage igen medions ? :o)

/Killer
Avatar billede bigilo Nybegynder
13. oktober 2005 - 08:54 #6
killerclown -> ja jeg har prøvet, men så står maskine bare og køre 100% CPU i lang tid, og så lukker jeg den ned....

Er der ikke nogen der har en ide til hvad det kan være???
Ville rigtig gerne have det til at virke...
Avatar billede killerclown Nybegynder
13. oktober 2005 - 09:01 #7
Er det før du bliver promptet for initialer ?
/Killer
Avatar billede bigilo Nybegynder
13. oktober 2005 - 09:02 #8
nej, efter
Avatar billede killerclown Nybegynder
13. oktober 2005 - 09:03 #9
Der det et meget meget meget stort AD, i har ?
Avatar billede bigilo Nybegynder
13. oktober 2005 - 09:04 #10
Det er ikke lillet, men det tager normalt ikke så lang tid at søge det i gennem
Avatar billede killerclown Nybegynder
13. oktober 2005 - 09:09 #11
hmmmmmm.
Har du prøver, at angive brugerobjektet manuelt, og se, om det virker ?

    Set usr = GetObject("LDAP://cn=navn,ou=din ou,dc=noget,dc=noget,dc=noget")
    If usr.ISAccountLocked Then
  WScript.echo "Is Locked"
Else
    WScript.echo "Not Locked"
End If

P.s. Kan de forresten ikke være fordi, du kigger efter en værdi i ISAccountLocked ?
I min udgave ser det jo bare sådan ud :
If usr.ISAccountLocked Then
og ikke
If objuser.ISAccountLocked = True then

/Killer
Avatar billede bigilo Nybegynder
13. oktober 2005 - 10:06 #12
Jeg angiver i mit ejet script, brugeren manuelt, og det gør ikke nogen forskel.

Jeg har prøvet måde som du går, ved at sige If Objuser.isaccountlocked then
og ved at hente værdien. ingen af tingene virker...
Kan i se når en bruger er låst, når i gør det???
Avatar billede killerclown Nybegynder
13. oktober 2005 - 10:07 #13
yup :o)
Mine superbrugere bruger det på daglig basis. (Bare lidt pænere) ;)
Avatar billede bigilo Nybegynder
13. oktober 2005 - 10:52 #14
okay... Er underligt hvorfor jeg så ikke kan få det til at virke.
Avatar billede bigilo Nybegynder
14. oktober 2005 - 12:57 #15
Så, nu har jeg selv fundet en løsning.
Jeg skulle bare bruge WinNT i stedet for LDAP. Så køre det....
Avatar billede bigilo Nybegynder
14. oktober 2005 - 12:57 #16
Set ObjNTUser = GetObject("WinNT://Domain/" & Username.value & ",User")
        If Err.number <> 0 then
            Msgbox err.Description & " - " & err.Source
            err.Clear
        end if       
        ADAccountlock.checked = objNTuser.ISAccountLocked
Avatar billede killerclown Nybegynder
14. oktober 2005 - 13:18 #17
Hehe .. .wierd :o)
/killer
Avatar billede bigilo Nybegynder
14. oktober 2005 - 13:31 #18
Fandt det faktisk på en microsoft side, som skriver at man kun kan hente oplysningen på den måde. Så ja det er meget underligt
Avatar billede killerclown Nybegynder
14. oktober 2005 - 14:14 #19
Ja, det er da HELT sort.
De er da fulde af fup derinde.
Det kunne være man skulle søge ind hos MS :p
/Killer
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester