Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS-Script mit Benutzerdialog zum PW ändern in einer 2003er AD-Domäne

Frage Entwicklung VB for Applications

Mitglied: JoshuaTree

JoshuaTree (Level 1) - Jetzt verbinden

17.05.2006, aktualisiert 21.06.2006, 8536 Aufrufe, 12 Kommentare

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
Mitglied: maneich
17.05.2006 um 14:50 Uhr
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
Bitte warten ..
Mitglied: JoshuaTree
17.05.2006 um 15:00 Uhr
Hi,

danke für die Hilfe.

Beim Testen erzählt er mir a nach pw_old_new = pw1, pw2 wird ein Abschluss erwartet und b "C:\test.vbs(1, 1) (null): Ein solches Objekt ist auf dem Server nicht vorhanden."

Ne Idee. Bla bla habe ich natürlich dur die Domäne ersetzt
Bitte warten ..
Mitglied: maneich
17.05.2006 um 16:55 Uhr
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
Bitte warten ..
Mitglied: JoshuaTree
23.05.2006 um 15:25 Uhr
Weitere deppenfrage wie stelle ich den ein Komma oder ähnliches zwischen
zwei Variablen dar?

Like this: MsgBox pw1,pw2

pw1 und 2 sind Variablen dazwischen hätte ich gerne ein Komma oder sonst was.


und noch was.
muß man in VB-Script irgend ein Zeichen abschneiden nach der Abrage eines Parameters durch eine inputbox.
Bei Perl muß man bei der <STDIN> das CR/LF durch ./n abtrennen.
Denn ich bekomme ständig die Fehlermeldung das der Parameter der übergeben wird nicht mit dem Orginal übereinstimmt. Das habe ich natürlich überprüft und das Orgingal ist gleich der Eingabe in die Inputbox.

*grübel*

Thx
Andreas
Bitte warten ..
Mitglied: maneich
23.05.2006 um 20:00 Uhr
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
Bitte warten ..
Mitglied: JoshuaTree
30.05.2006 um 10:07 Uhr
@maneich

sory wer lesen kann....


Das mit dem abschneiden der cr/lf (carriage return/line feet) ist dann wohl nur beim Perl
schade auch aber dann bin ich immer noch nicht da wo ich hin will.

*
call main


Sub main()

WshUserName = InputBox ("Bitte eingeben: Username ")
'Set WshShell = WScript.CreateObject("WScript.Shell")
'WshUserName= WshShell.ExpandEnvironmentStrings("%username%")
MsgBox WshUserName

pw1 = InputBox("Eingabe altes Passwort: ")
pw2 = InputBox("eingabe neues Passwort: ")
pw_old_new = "pw1, pw2"

Set objUser = GetObject("LDAP://cn=" & WshUserName & ",cn=users,dc=bla,dc=bla,dc=local")
objUser.ChangePassword "pw1", "pw2"

End Sub


pw1 soll dem alten Passwort entsprechen debugger erzählt mir das das PW falsch ist, ist es aber nicht
dehalb vermutete ich das irgend ein unsichtbares Zeichen übertragen wird das mir die Suppe versalzt.

Jemand eine idee?
Bitte warten ..
Mitglied: maneich
30.05.2006 um 20:54 Uhr
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
Bitte warten ..
Mitglied: JoshuaTree
31.05.2006 um 10:31 Uhr
.....dein eine Problem Geht das neu kommt


so funktioniert es :

Call main


Sub main()
Dim pw_old_new
WshUserName = InputBox ("Bitte eingeben: Username ")

pw1 = InputBox("Eingabe altes Passwort: ")
pw2 = InputBox("Bitte Passwort wiederholen")
pw_old_new = pw1 & "," & pw2


Set objUser = GetObject("LDAP://cn="& WshUserName &",cn=users,dc=bla,dc=bla,dc=local")
objUser.ChangePassword pw_old_new

End Sub
**

Jedoch erwartet die AD-Schnittstelle Hochkommas like this:
objUser.ChangePassword "i5A2sj*!", "jl3R86df"

Parameter 1 ist altes Passwort Parameter 2 ist neues Passwort.

Wie bekomme ich jetzt die Hochkommas um ----pw_old_new = pw1 & "," & pw2-----.

Im Moment stellt er das so dar: pw1,pw2
So wie ursprünglich gewünscht. ADSI will aber es so : "pw1", "pw2"

Hilfeeeee

PS:
Brauche immer noch ein Buch über VB-Script, bitte um eine Empfehlung.
Bitte warten ..
Mitglied: maneich
31.05.2006 um 13:14 Uhr
Hallo,

war doch bereits genau erklärt:

pw_old_new = Chr(34) & pw1 & Chr(34) & ", " & Chr(34) & pw2 Chr(34)

wenn Komma ebenfalls in Hochkomma gesetzt sein muß dann:

pw_old_new = Chr(34) & pw1 & Chr(34) & "", "" & Chr(34) & pw2 Chr(34)

MfG maneich
Bitte warten ..
Mitglied: JoshuaTree
31.05.2006 um 13:45 Uhr
Was ist der Unterschied zwischen der Benutzung von chr(34) und dem Anführungszeichen(hochkommas)?
Wenn ich die Komma so rein schreibe erzählt er mir "Anweisungsende erwartet" in der Zeile !?

danke für deine Hilfe
Bitte warten ..
Mitglied: n4426
19.06.2006 um 20:46 Uhr
Hallo,

hab mal ne frage.

Ist es möglich, das bei der eingabe das Passwort nicht im Klartext (123456789) angezeigt wird, sondern als Sternrech (*)? Dann währe nicht schlecht, wenn er das neue Passwort zweimal abfrag und dann überprüft, ob es identisch ist.

Hat eine von euch ne idee?

mfg
andi
Bitte warten ..
Mitglied: JoshuaTree
21.06.2006 um 14:25 Uhr
Hi,

ja das geht wenn du es mit HTA bzw. hmtl abfackelst und als <input type="password"> nimmst.

Gruss
Andreas
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Hilfe Bei einem vbs Script (19)

Frage von Hattori-Hanzo zum Thema Batch & Shell ...

Windows Netzwerk
NTP in AD-Domäne mit VPN-Aussenstellen (5)

Frage von lcer00 zum Thema Windows Netzwerk ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (16)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...

CMS
Lokales Wordpress im LAN - wie aufsetzen? (15)

Frage von Static zum Thema CMS ...

LAN, WAN, Wireless
IP im privaten Netz nicht erreichbar (12)

Frage von guntis zum Thema LAN, WAN, Wireless ...

Windows Server
Druck wird nicht erlaubt (10)

Frage von daquick zum Thema Windows Server ...