Ein bekanntes Thema im enaio®-Consulting, dem ihr vielleicht auch schon begegnet seid: Ein Nutzer oder eine Nutzerin hat ein Problem mit dem System, das niemand sonst zu haben scheint. Wenn man als hilfsbereiter Consultant per Telefon versucht, das ungewollte Verhalten bei sich zu reproduzieren, verhält sich das System aber plötzlich leider korrekt.
In diesen Situationen wäre es schön, wenn man sich direkt mit den Login-Daten des betroffenen Nutzers im System einwählen könnte, um die gleichen Bedingungen herstellen zu können und die Probleme zu identifizieren.
Die Ausgangssituation kann schnell dazu führen, dass man sich als Consultant fühlt, wie eine Phishing-Mail, mit der aus unbedarften Endnutzern zuerst die Login-Daten und anschliessend die Ersparnisse extrahiert werden. “Könnten Sie mir bitte Ihr Passwort geben?” ist eine Frage, die nicht sehr professionell klingt und eventuell ein ungutes Gefühl hinterlässt.
Ein Script, um den Remote-Support zu erleichtern.
Wir (von der ECMind GmbH) haben also ein Script erstellt, welches das Problem umgeht, ohne dass der Consultant das Passwort des Users gesehen hat.
Voraussetzung hierfür ist, dass in der Benutzerkonfiguration des Admins, der das Problem untersucht, die Systemrolle ‘Server: Ado-Jobs ausführen’ gesetzt ist, so wie unten im Screenshot angezeigt.
Das Recht ‚Server: Ado-Jobs ausführen‘ muss für diesen Nutzer gesetzt sein.
Anwender-Sicht auf die Dinge
Das Script startet per Doppelklick und einem Eingabefeld:
Der Benutzername des Users, dessen Passwort geändert werden soll, kann eingegeben werden.
Der ‚Cancel‘-Button bricht das Script komplett ab.
Nachdem der Benutzernamen des betroffenen Users eingegeben wurde, muss in einer weiteren Maske bestätigt werden, dass das Passwort tatsächlich geändert werden kann:
Fenster zur Bestätigung der Passwort-Änderung
Bei Klick auf ‚No‘ bricht das Script wiederum ab.
Bei Klick auf ‚Yes‘, wird das Passwort auf ‚optimal‘ geändert und der Consultant kann sich mit dem Benutzernamen des Nutzers einloggen.
Es öffnet sich gleichzeitig ein weiteres Fenster, das dem Consultant ermöglicht, das vorherige Passwort wiederherzustellen.
Soll das ursprüngliche Passwort wiederhergestellt werden?
Sobald der Consultant das Problem reproduziert hat und den Login nicht mehr benötigt, kann er das Fenster wieder in den Vordergrund holen und mit Klick auf ‚Yes‘ das Passwort wiederherstellen. Sollte der Consultant auf ‚No‘ klicken, bleibt das Passwort des Nutzers auf ‚optimal‘ gesetzt und das ursprüngliche Passwort müsste über den enaio®-Administrator wieder neu gesetzt werden.
Das Script
Hier nun das Helfer-Script, welches ihr gerne nutzen könnt:
Const stdPwd = "#jRDlgEKu8rZaoJdZtWz" + \
"R0xRz08VaAxfyiYGwxFM5R8OnOccGSs" + \
"Kq3DRrxcDvsqJicZsz6LGVBNhzKOQzj" + \
"2+mU/eZ/wGvJMJ54YAJb+T1X4MtfZrh" + \
"NU5+cSX4rSftZdKNyhLyV9aSM1RtXju" + \
"lboAG12n4lTEKJyEC/3aVlxkanaGYBG" + \
"payWz53BUP2e4NXPFs"
Dim MyAX: Set MyAX = CreateObject("Optimal_AS.Application")
Dim ClientDrtSession: Set ClientDrtSession = MyAX.GetDrtSession
Main(): Sub Main
Dim inUser, origPwd
Dim selStmnt, updStmnt
Dim intAnswer
'Display InputBox to get User for which the Pwd should be changed
inUser = InputBox ("For which user would you like to change the password?", \
"Change Password")
If inUser = "" Then Exit Sub
selStmnt = "select passwort from sysadm.benutzer where benutzer = '" & inUser & "'"
'Store Pwd for this User
origPwd = executeSQLSelect(selStmnt)
'Change Pwd to "optimal"
intAnswer = MsgBox ("Would you like to temporarily update the password of user '" & \
inUser & "' to 'optimal'?", vbYesNo+vbQuestion, "Change Password")
If intAnswer = vbYes Then
updStmnt = "update sysadm.benutzer set passwort = '"& stdPwd & \
"' where benutzer = '" & inUser & "'"
executeSQL updStmnt
Else
Exit Sub
End If
'Restore Password
intAnswer = MsgBox ("Would you like to restore the original password of user '" & \
inUser & "'?", vbYesNo+vbQuestion, "Change Password")
if intAnswer = vbYes Then
updStmnt = "update sysadm.benutzer set passwort = '"& origPwd("passwort") & \
"' where benutzer = '" & inUser & "'"
executeSQL updStmnt
Else
Exit Sub
End If
End Sub
'Helper Functions
Function ExecuteSQL(ByVal statement)
Dim job: Set job = ClientDrtSession.CreateJob("ado", "ExecuteSQL")
job.addInParam "Command", statement, 1
job.addInParam "Flags", "0", 2
job.execute
Set executeSQL=job
End Function
function executeSQLSelect(ByVal statement)
Dim job: set job = executeSQL(statement)
Dim RS: Set RS=CreateObject("ADODB.Recordset")
RS.Open(Split(job.GetOutFiles(), ";")(0))
set executeSQLSelect=RS
end function