VBS-Script mit Benutzerdialog zum PW ändern in einer 2003er AD-Domäne
Hallo,
bin immer noch auf auf der Such nach einer Lösung um meinen Useren es zu ermöglichen ich komfortabel ihr AD Passwort zu ändern.
Anfangs wollte ein Progi bzw. CGI mit Perl basteln, davon bin ich weg jetzt hänge ich bei VBS.
Leider mit noch sehr wenig Erfahrung in VBS.
Gedacht ist es so das der user das Script startet, entweden eingebettet in einer HTML/HTA Seite oder direkt. Dazu sind ja bekanntlich ein paar Abfragen notwendig. Altes Passwort,
neues PW und PW wiederholung.
Das wollte ich jetzt mit dem folgenden Script tun
option explicit
dim username, passwort1, passwort2, objChild, objUser
Set objUser = GetObject _
("LDAP://cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
objUser.ChangePassword "passwort1", "passwort2"
username=inputbox("Bitte eintragen","Username")
passwort1=inputbox("Passwort eingeben","Passwort 1")
passwort2=inputbox("Bitte Passwort wiederholen","Passwort 2")
Beim LDAP-Bind im Pfad würde ich gerne eine Variable verwenden,
das blöde Script erzählt mir aber das es dieses Objekt nicht gibt. Klar
im AD existiert kein 'Username' das soll die Variable bei der Abfrage bringen
genau so beim Passwort1 und Passwort2.
Kann mir mal jemand einen hint geben. Dreh noch durch mit dem Mist.
Offtopic:
Brauche ein gescheites Buch über VBS, kennt jemand eins?
Gruss
Andreas
bin immer noch auf auf der Such nach einer Lösung um meinen Useren es zu ermöglichen ich komfortabel ihr AD Passwort zu ändern.
Anfangs wollte ein Progi bzw. CGI mit Perl basteln, davon bin ich weg jetzt hänge ich bei VBS.
Leider mit noch sehr wenig Erfahrung in VBS.
Gedacht ist es so das der user das Script startet, entweden eingebettet in einer HTML/HTA Seite oder direkt. Dazu sind ja bekanntlich ein paar Abfragen notwendig. Altes Passwort,
neues PW und PW wiederholung.
Das wollte ich jetzt mit dem folgenden Script tun
option explicit
dim username, passwort1, passwort2, objChild, objUser
Set objUser = GetObject _
("LDAP://cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
objUser.ChangePassword "passwort1", "passwort2"
username=inputbox("Bitte eintragen","Username")
passwort1=inputbox("Passwort eingeben","Passwort 1")
passwort2=inputbox("Bitte Passwort wiederholen","Passwort 2")
Beim LDAP-Bind im Pfad würde ich gerne eine Variable verwenden,
das blöde Script erzählt mir aber das es dieses Objekt nicht gibt. Klar
im AD existiert kein 'Username' das soll die Variable bei der Abfrage bringen
genau so beim Passwort1 und Passwort2.
Kann mir mal jemand einen hint geben. Dreh noch durch mit dem Mist.
Offtopic:
Brauche ein gescheites Buch über VBS, kennt jemand eins?
Gruss
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 32689
Url: https://administrator.de/forum/vbs-script-mit-benutzerdialog-zum-pw-aendern-in-einer-2003er-ad-domaene-32689.html
Ausgedruckt am: 09.04.2025 um 03:04 Uhr
12 Kommentare
Neuester Kommentar
Hallo,
wenn Du die 3 InputBox Zeilen vor die Zeile Set objUser = GetObject setzt, müßte es klappen.
So kann es ja nichts werden, da die Variablem noch nicht definiert sind.
Du könntest höchstenfalls mit Functions arbeiten, dann wird direkt im AP abgefragt :
Set objUser = GetObject _
("LDAP://cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
objUser.ChangePassword pw_old_new
Function username
username = InbutBox("Bitte eingeben: Username ")
End Function
Function pw_old_new
pw1 = InputBox("Eingabe altes Passwort: ")
pw2 = InputBox("eingabe neues Passwort: ")
pw_old_new = pw1, pw2
End Function
wenn Du die 3 InputBox Zeilen vor die Zeile Set objUser = GetObject setzt, müßte es klappen.
So kann es ja nichts werden, da die Variablem noch nicht definiert sind.
Du könntest höchstenfalls mit Functions arbeiten, dann wird direkt im AP abgefragt :
Set objUser = GetObject _
("LDAP://cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
objUser.ChangePassword pw_old_new
Function username
username = InbutBox("Bitte eingeben: Username ")
End Function
Function pw_old_new
pw1 = InputBox("Eingabe altes Passwort: ")
pw2 = InputBox("eingabe neues Passwort: ")
pw_old_new = pw1, pw2
End Function
Hallo,
das a) war natürlich ein Fehler von mir, Zeichen zwischen Variablen müßen in Hochkomma gesetzt werden. Diese Zeile muß dann so aussehen:
pw_old_new = pw1 & ", " & pw2
Zu b) kann ich nur raten:
C:\Test.vbs ist der Name Deines Scripts.
(1,1) ist die Zeilen- und ZeichenStelle und (null) bedeutet objUser ist leer.
Wenn "Set objUser = GetObject" die erster Zeile ist mußt Du dahinter einen Unterstrich setzen, da die zweite Zeile eigentlich zur ersten gehört und die Verbindung durch dieses "_" Zeichen erkannt wird. Also
Set objUser = GetObject "_"
("LDAP:cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
könntest theoretisch auch schreiben
Set objUser = GetObject("LDAP:cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
Diese Zeichen natürlich ohne Hochkomma wird aber hier nicht anders dargestellt.
MfG maneich
das a) war natürlich ein Fehler von mir, Zeichen zwischen Variablen müßen in Hochkomma gesetzt werden. Diese Zeile muß dann so aussehen:
pw_old_new = pw1 & ", " & pw2
Zu b) kann ich nur raten:
C:\Test.vbs ist der Name Deines Scripts.
(1,1) ist die Zeilen- und ZeichenStelle und (null) bedeutet objUser ist leer.
Wenn "Set objUser = GetObject" die erster Zeile ist mußt Du dahinter einen Unterstrich setzen, da die zweite Zeile eigentlich zur ersten gehört und die Verbindung durch dieses "_" Zeichen erkannt wird. Also
Set objUser = GetObject "_"
("LDAP:cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
könntest theoretisch auch schreiben
Set objUser = GetObject("LDAP:cn=username,cn=users,dc=blabla,dc=blabla,dc=local")
Diese Zeichen natürlich ohne Hochkomma wird aber hier nicht anders dargestellt.
MfG maneich
Hallo,
nun ja, wenn Du Dir meinen letzten Thread genau anschaust, kannst Du das, was Du heute als Frage stellst, bei "pw_old_new..." erkennen.
Deine zweite Frage verstehe ich nicht ganz. Abtrennen oder abschneiden muß man in VBS nichts, z.B.:
x = InputBox("eingabe Parameter x:")
was in Klammer steht wird angezeigt und auf eine Eingabe gewartet.
Mußt evtl. mal das Original einlesen und anzeigen lassen, evtl. auch die Stringlänge vergleichen. Möglicherweise hat das Original vorne oder hinten noch eine Leerstelle oder Du übergibst in der InputBox nicht die richtige Länge.
MfG maneich
nun ja, wenn Du Dir meinen letzten Thread genau anschaust, kannst Du das, was Du heute als Frage stellst, bei "pw_old_new..." erkennen.
Deine zweite Frage verstehe ich nicht ganz. Abtrennen oder abschneiden muß man in VBS nichts, z.B.:
x = InputBox("eingabe Parameter x:")
was in Klammer steht wird angezeigt und auf eine Eingabe gewartet.
Mußt evtl. mal das Original einlesen und anzeigen lassen, evtl. auch die Stringlänge vergleichen. Möglicherweise hat das Original vorne oder hinten noch eine Leerstelle oder Du übergibst in der InputBox nicht die richtige Länge.
MfG maneich
Hallo,
pw1 bzw. pw2 sind Variable.
Wenn Du diese mit Hochkomma angibst "pw1", liest VBS nur pw1 (also den Variablennamen) und nicht den Inhalt.
Variable müßten ohne Hochkomma erkannt werden; ansonsten wenn trotzdem Hochkomma verlangt werden, dann so
Chr(34) & pw1 & Chr(34)
Damit wird der Inhalt von pw1 gelesen und in Hochkomma gesetzt.
MfG maneich
pw1 bzw. pw2 sind Variable.
Wenn Du diese mit Hochkomma angibst "pw1", liest VBS nur pw1 (also den Variablennamen) und nicht den Inhalt.
Variable müßten ohne Hochkomma erkannt werden; ansonsten wenn trotzdem Hochkomma verlangt werden, dann so
Chr(34) & pw1 & Chr(34)
Damit wird der Inhalt von pw1 gelesen und in Hochkomma gesetzt.
MfG maneich