mboost-dp1

VBS - Reset user pass


Gå til bund
Gravatar #1 - Magten
20. aug. 2008 13:31
Mojn i køkkenet.. Er ved at lave mig et lille admin tool til mit AD (bare for sjov :))..

Jeg skal nu have lavet en reset pass funktion, men den vil ikke rigtig som jeg vil :(

Indtil videre har jeg lavet dette:

dim USERNAME
USERNAME = InputBox("Enter Username")

Set ObjUser = GetObject("LDAP://cn="& USERNAME &",ou=Users,dc=test,dc=dom")

objUser.GetInfo
objUser.SetPassword password
objUser.SetInfo


Og jeg får fejl på denne linje:
Set ObjUser = GetObject("LDAP://cn="& USERNAME &",ou=Users,dc=test,dc=dom")
"There is no such object on the server" - og ja, brugeren eksisterer :D

Jeg har på fornemmelsen at jeg har indsat "& USERNAME &" forkert ^^ Det er lidt bøvlet når de fleste scripts/tutorials der ligger på nettet ikke bruger prompt boxe for username/password osv :/

Anyways, håber der er en der kan hjælpe :)
Gravatar #2 - Magten
21. aug. 2008 07:19
*bump*

Slet ingen der kender til det? :)
Gravatar #3 - karga
21. aug. 2008 08:03
Uden at vide det, kunne jeg forestille mig, at du skal adskille inputs med semikolon og ikke komma?
Gravatar #4 - thorjak
21. aug. 2008 08:22
Nope komma er fint.
Det er den rigtige sti til din ldap server ?
Gravatar #5 - Jimmi Larsen
21. aug. 2008 08:25
Det ser ud til den ikke oversætter USERNAME korrekt.

Prøv med følgende:

Set ObjUser = GetObject ("LDAP://CN='" & USERNAME & "',CN=Users,DC=test,DC=dom")

Hvis det ikke virker, så prøv denne:

Dim strServer
Dim USERNAME

USERNAME = InputBox("Enter Username")
strServer = USERNAME & ",ou=Users,dc=test,dc=dom"

GetObject("LDAP://" & strServer)

objUser.GetInfo
objUser.SetPassword password
objUser.SetInfo
Gravatar #6 - Jimmi Larsen
21. aug. 2008 08:26
Eventuelt, erstat USERNAME med er korrekt username, for at se om det virker. Som thorjak siger, det kan være stien den er gal med.
Gravatar #7 - Magten
21. aug. 2008 08:52
#4
Ja, stien er korrekt. Den bliver brugt i andre scripts også.

#5
Din mulighed nummer 2 giver følgende fejl:
Line 7 Char 1 - An invalid dn syntax has been specified

Første mulighed giver samme fejl som jeg fik i #1

#6
Jeg prøvede at køre følgende:
Set objUser = GetObject("LDAP://CN=testuser,OU=Users,dc=test,dc=dom")


Useren "testuser" eksisterer i den OU men jeg får samme fejl "There is no such object on the server"
Gravatar #8 - Jimmi Larsen
21. aug. 2008 09:03
Så er din sti ikke korrekt.

Tjek i AD og list træstrukturen, evt. link til et screenshot.

Ja der er en lille fejl i #2 løsning, det skal være:

GetObject("LDAP://CN=" & strServer)
Gravatar #9 - Magten
21. aug. 2008 09:20
http://i37.tinypic.com/2z86xiv.jpg

Det er godt nok fra drifts miljøet, men det eneste der er forskelligt fra test er domænenavnet "test.dom" som er "bus.dom" i driften.

Har iøvrigt også testet det i drifts miljøet og der virker det heller ikke.
Gravatar #10 - Jimmi Larsen
21. aug. 2008 13:51
ah, jeg tror jeg ved hvor fejlen er. Users ligger i roden ikke?

Det er ikke en OU men en CN.

Prøv denne her


Set objUser = GetObject("LDAP://CN=testuser,CN=Users,DC=test,
DC=dom")
Gravatar #11 - Magten
21. aug. 2008 15:00
Det ser umiddelbart ud til at virke :D

Får ingen fejl i hvertfald.. Tusind tak! :)
Gravatar #12 - Jimmi Larsen
21. aug. 2008 15:02
Det var så lidt :D
Gravatar #13 - Magten
22. aug. 2008 07:44
Tror jeg var lidt for hurtigt ude der...

Jeg havde selvfølgelig lige glemt at rette CN=testuser til at tage inputtet..

Når jeg kører med følgende:
        Dim USERNAME
Dim objUser
Dim password
Dim WScript

USERNAME = InputBox("Enter Username")

Set objUser = GetObject("LDAP://CN='" & USERNAME & "',CN=Users,DC=bus,DC=dom")


objUser.GetInfo()
objUser.SetPassword(password)
objUser.SetInfo()

WScript.Echo("Done!")
Får jeg fejlen "There is no such object on the server"

Men kører jeg det med den her:
        Dim USERNAME

Set objUser = GetObject("LDAP://CN=testuser,CN=Users,DC=bus,DC=dom")


objUser.GetInfo()
objUser.SetPassword(password)
objUser.SetInfo()

WScript.Echo("Done!")
Så kører den fint og afslutter med "Done!" beskeden..

I den øverste der beder den også om at:
Dim objUser
Dim password
Dim WScript

er der, ellers kan den slet ikke køre scriptet :/
Gravatar #14 - Magten
22. aug. 2008 09:20
Så skulle det problem være løst...

Istedet for:
Set objUser = GetObject("LDAP://CN='" & USERNAME & "',CN=Users,DC=bus,DC=dom")

Skal det være:
Set objUser = GetObject("LDAP://CN=" & USERNAME & ",CN=Users,DC=bus,DC=dom")

Altså uden ' rundt om " & USERNAME & " :)

Edit:
Baaah, når jeg indsætter koden i Visual Basic brokker den sig :(

Koden er:
        Dim USERNAME
Dim objUser
Dim password

USERNAME = InputBox("Enter Username")

objUser = GetObject("LDAP://CN=" & USERNAME & ",CN=Users,DC=test,DC=dom")

objUser.GetInfo()
objUser.SetPassword(password)
objUser.SetInfo()

WScript.Echo("Done!")

Fejlene er:
-Error 1 Name 'password' is not declared. (denne linje: objUser.SetPassword(password))
-Error 2 Name 'WScript' is not declared. (denne linje: WScript.Echo("Done!"))

Det virker fint hvis man bare gemmer det som .vbs og kører det men i Visual Basic brokker den sig.. :/
Gravatar #15 - Jimmi Larsen
22. aug. 2008 14:19
Error 1:
Prøv med denne: objUser.SetPassword(" & password & ")

Error 2:
Du kan svjv ikke bruge Wscript i Visual Basic.

Prøv evt. med:
Debug.Print Done
Eller
Msgbox("Done")
Gravatar #16 - Jimmi Larsen
22. aug. 2008 14:20
Du kan også komme i klemme med Dim.

Der er nogle gange en verden til forskel mellem VB og VBS,
jeg har dog desværre ikke nogen VB compiler installeret,
så jeg svarer efter hvad jeg sådan lige kan sjusse mig frem til :P

Mener man skal bruge Dim as, ie. Dim password as String
Gravatar #17 - Magten
26. aug. 2008 06:38
Jimmi Larsen (15) skrev:
Error 1:
Prøv med denne: objUser.SetPassword(" & password & ")

Error 2:
Du kan svjv ikke bruge Wscript i Visual Basic.

Prøv evt. med:
Debug.Print Done
Eller
Msgbox("Done")
Det vil jeg prøve :) Tak!



Jimmi Larsen (16) skrev:
Du kan også komme i klemme med Dim.

Der er nogle gange en verden til forskel mellem VB og VBS,
jeg har dog desværre ikke nogen VB compiler installeret,
så jeg svarer efter hvad jeg sådan lige kan sjusse mig frem til :P

Mener man skal bruge Dim as, ie. Dim password as String
Og det vil jeg også lige teste :) Takker igen ;)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login