VBScript dans HTMLpour modifier mot de passe AD
Bonjour j'ai actuellement un script vbs qui permet de changer le mot de passe de session pour un utilisateur donné.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
option explicit
const strLDAPRoot = "LDAP://Mondomaine"
const intNormalOperation = 0
const intUserNotFound = 1
const intCouldNotChangePassword = 2
dim strUserName
dim strUserOldPassword
dim strUserNewPassword
dim strUserDN
'**********************************
'Error handling
'**********************************
on error resume next
'**********************************
'Logic
'**********************************
'Get the command line arguments
select case wscript.arguments.count
Case 3:
'Set the variables from the command line
strUserName = wscript.arguments(0)
strUserOldPassword = wscript.arguments(1)
strUserNewPassword = wscript.arguments(2)
'find the distinguished name for this user
strUserDN = GetUserDistinguishedname(strLDAPRoot, strUserName)
CheckForError intUserNotFound
case 0:
'Get the user's login name from the interactive user
strUserName = inputbox("Quel est votre nom d'utilisateur ?")
'find the distinguished name for this user
strUserDN = GetUserDistinguishedname(strLDAPRoot, strUserName)
intUserNotFound
if strUserDN <> "" then
'if the query returned a distinguished name, then ask for a password
strUserOldPassword = inputbox("Quel est votre ancien mot de passe ?")
'if the query returned a distinguished name, then ask for a password
strUserNewPassword = inputbox("QUel est votre mot de passe souhaité ?")
else
'the query did not return a distinguished name (user was not found)
msgbox "That user was not found in Active Directory. Please check the login name and try again."
end if
Case Else:
'the wrong number of parameters were supplied on the command line. Notify the user
msgbox "Usage: SetPassword.vbs <username> <old password> <new password>" & vbcrlf & vbcrlf & "You can also use SetPassword without any parameters for interactive mode."
end select
'At this point, terminate the program execution if we don't have a distinguished name for the user account
if strUserDN <> "" then
ChangeUserPassword strUserDN, strUserOldPassword, strUserNewPassword
CheckForError intCouldNotChangePassword
'quit and return a successful errorlevel
wscript.quit intNormalOperation
else
'quit and return errorlevel indicating the user was not found
wscript.quit intUserNotFound
end if
'**********************************
'Functions
'**********************************
Function GetUserDistinguishedName(strLDAPRoot, strSamAccountName)
dim objConnection
dim objCommand
dim objRecordset
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "SELECT distinguishedName FROM '" & strLDAPRoot & "' WHERE objectCategory='user' AND sAMAccountName='" & strSamAccountName & "'"
Set objRecordSet = objCommand.Execute
if Not objRecordset.EOF then
GetUserDistinguishedName = objRecordset.Fields("distinguishedname")
end if
objConnection.Close
End Function
Function GetUserLastPasswordChange(strUserDN)
dim objUser
Set objUser = GetObject("LDAP://" & strUserDN)
GetUserLastPasswordChange = objUser.PasswordLastChanged
End Function
Function ChangeUserPassword(strUserDN, strOldPassword, strNewPassword)
dim objUser
Set objUser = GetObject("LDAP://" & strUserDN)
objUser.ChangePassword strOldPassword, strNewPassword
End Function
Sub CheckForError(intErrorCondition)
if err.number <> 0 then
wscript.quit intErrorCondition
end if
end sub |
J'aimerais intégrer ce script dans du HTML, ce qui me permettrai d'avoir une page web de modification de mot de passe en cliquant sur un bouton.
Cela donne ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
| <HTML>
<HEAD>
<TITLE>New Page</TITLE>
<FORM NAME="Form1">
<INPUT TYPE="Button" NAME="test" VALUE="Click">
<SCRIPT FOR="test" EVENT="onClick" LANGUAGE="VBScript">
option explicit
const strLDAPRoot = "LDAP://Mondomaine"
const intNormalOperation = 0
const intUserNotFound = 1
const intCouldNotChangePassword = 2
dim strUserName
dim strUserOldPassword
dim strUserNewPassword
dim strUserDN
'**********************************
'Error handling
'**********************************
on error resume next
'**********************************
'Logic
'**********************************
'Get the command line arguments
select case wscript.arguments.count
Case 3:
'Set the variables from the command line
strUserName = wscript.arguments(0)
strUserOldPassword = wscript.arguments(1)
strUserNewPassword = wscript.arguments(2)
'find the distinguished name for this user
strUserDN = GetUserDistinguishedname(strLDAPRoot, strUserName)
CheckForError intUserNotFound
case 0:
'Get the user's login name from the interactive user
strUserName = inputbox("Quel est votre nom d'utilisateur ?")
'find the distinguished name for this user
strUserDN = GetUserDistinguishedname(strLDAPRoot, strUserName)
intUserNotFound
if strUserDN <> "" then
'if the query returned a distinguished name, then ask for a password
strUserOldPassword = inputbox("Quel est votre ancien mot de passe ?")
'if the query returned a distinguished name, then ask for a password
strUserNewPassword = inputbox("QUel est votre mot de passe souhaité ?")
else
'the query did not return a distinguished name (user was not found)
msgbox "That user was not found in Active Directory. Please check the login name and try again."
end if
Case Else:
'the wrong number of parameters were supplied on the command line. Notify the user
msgbox "Usage: SetPassword.vbs <username> <old password> <new password>" & vbcrlf & vbcrlf & "You can also use SetPassword without any parameters for interactive mode."
end select
'At this point, terminate the program execution if we don't have a distinguished name for the user account
if strUserDN <> "" then
ChangeUserPassword strUserDN, strUserOldPassword, strUserNewPassword
CheckForError intCouldNotChangePassword
'quit and return a successful errorlevel
wscript.quit intNormalOperation
else
'quit and return errorlevel indicating the user was not found
wscript.quit intUserNotFound
end if
'**********************************
'Functions
'**********************************
Function GetUserDistinguishedName(strLDAPRoot, strSamAccountName)
dim objConnection
dim objCommand
dim objRecordset
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "SELECT distinguishedName FROM '" & strLDAPRoot & "' WHERE objectCategory='user' AND sAMAccountName='" & strSamAccountName & "'"
Set objRecordSet = objCommand.Execute
if Not objRecordset.EOF then
GetUserDistinguishedName = objRecordset.Fields("distinguishedname")
end if
objConnection.Close
End Function
Function GetUserLastPasswordChange(strUserDN)
dim objUser
Set objUser = GetObject("LDAP://" & strUserDN)
GetUserLastPasswordChange = objUser.PasswordLastChanged
End Function
Function ChangeUserPassword(strUserDN, strOldPassword, strNewPassword)
dim objUser
Set objUser = GetObject("LDAP://" & strUserDN)
objUser.ChangePassword strOldPassword, strNewPassword
End Function
Sub CheckForError(intErrorCondition)
if err.number <> 0 then
wscript.quit intErrorCondition
end if
end sub
</SCRIPT>
</FORM>
</HEAD>
<BODY>
</BODY> |
La page web m'indique qu'il y a des erreurs sur la page et le script ne s'execute pas. Pouvez vous m'aider s'il vous plait