Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Windows Server 2000/2003/2008, IIS
Modifica password
giovedì 04 maggio 2006 - 17.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
gio 4 mag 2006 - 17:56
Sto cercando di modificare le password di un utente di ActiveDirectory tramite un file VBS.
Il comando è il seguente:
Set UserObj = GetObject("WinNT://my domain/my user")
UserObj.ChangePassword "password_old", "password_new"
Quando lancio lo script mi restituisce un errore dicendomi che non sono stati seguiti i criteri di password. In realtà se vado da ActiveDirectory e introduco la password presente nello script, il tutto funziona correttamente.
Lo script viene lanciato direttamente sul SERVER 2003 dall'utente Administrator.
Se provo a modificare delle proprietà dell'utente ad esempio il Nome esteso o la descrizione, questo me lo fa senza problemi.
Cosa sto sbagliando???
Vi prego aiutatemi, sono disperata, devo assolutamente consegnare questo lavoro e mi manca solo questa parte!
Grazie mille!!!
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
gio 4 mag 2006 - 21:53
ciao
hai provato a modificare la Set UserObj cosi
Set UserObj = GetObject("WinNT://" & strcomputer & "/" & struser & ",user")
cio' premesso il problema sembra comunque nell' impostazione dei criteri di password ...
hai verificato il codice di ritorno e l'event log su 2003 ? i.e.
err -2147022651 ( hex 800708C5) (old password/new password concidono)
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
ven 5 mag 2006 - 09:23
Ho provato a modificare la Set UserObj come mi hai detto, ma ho ancora lo stesso problema.
Sono andata sul visualizzatore eventi e mi mostra tutti gli eventi di accesso ad ActiveDirectory, ma non mi mostra l'errore.
Ho anche provato a modificare la nuova password inserendone una lunga 11 caratteri con al suo interno almeno una maiuscola una minuscola e un numero. Tale password sono sicura che è corretta secondo i criteri di protezione perchè era già stata usata tempo fa per un altro utente che poi è stato cancellato, mentre non è mai stata utilizzata per l'utente che ho creato, anche perchè è un utente nuovo e per ora ho impostato solo la prima password.
Cosa posso verificare?
Grazie.
Ciao!
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
ven 5 mag 2006 - 11:44
ciao
vuoi provare questo pezzo di codice (testato a lungo)
(riattiva le msgbox)
SettaPwd computer,struser,prevpass,newpass
Sub SettaPwd (strcomputer,struser,prevpass,newpass)
on error resume next
Dim CodiceRitorno
'msgbox "Setta pWD " & prevpass & " - " & newpass & " su " & strcomputer
Set UserObj = GetObject("WinNT://" & strcomputer & "/" & struser & ",user")
'msgbox "setpwd1 " & err.number & " hex = " & Hex(err.number)
UserObj.ChangePassword prevpass,newpass
CodiceRitorno = err.number
'msgbox "setpwd2 hex = " & Hex(CodiceRitorno)
Select case CodiceRitorno
case 0
' use code 7 for specific event msg
esito = "Regular Change passowrd for " & struser
'msgbox esito
' MyLogHandler strcomputer,7,esito
case -2147022651 ' hex 800708C5
' same old/new pwd
esito = struser
MyLogHandler strcomputer,CodiceRitorno,esito
Err.clear
case -2147024810 ' hex 80070056
'msgbox "chgpwd " & CodiceRitorno & " hex = " & Hex(CodiceRitorno)
esito = "current passwd unexpected for " & struser
'MyLogHandler strcomputer,CodiceRitorno,esito
set container = GetObject("WinNT://" & strcomputer & ",computer" )
'msgbox "setpwd3 " & err.number & " hex = " & Hex(err.number)
set user = Container.Getobject("user",struser)
IF err.number = 0 then
call user.SetPassword(newpass)
IF err.number = 0 then
esito = "Change password successfull " & struser
' use code 7 for specific event msg
' MyLogHandler strcomputer,7,esito
user.setinfo
else
esito = "set pwd " & struser
'MyLogHandler strcomputer,err.number,esito
end if
else
esito = "set user " & struser
'MyLogHandler strcomputer,err.number,esito
end if
case - 2147023569 ' hex 8007052F
esito = "Password already change for today = " & CodiceRitorno & " for " & struser
'MyLogHandler strcomputer,CodiceRitorno,esito
case else
esito = "unpredicted error = " & CodiceRitorno & " for " & struser
msgbox esito
'MyLogHandler strcomputer,CodiceRitorno,esito
End select
End sub
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
lun 8 mag 2006 - 09:09
Ho copiato il tuo codice, ma l'errore che mi viene fuori è sempre lo stesso che mi veniva anche con la mia procedura.
L'errore è il n° : 800708C5, ma ho paura che non c'entri nulla, anche perchè la vecchia password e quella nuova sono completamente diverse e la nuova password rispecchia perfettamente i criteri di password impostati sul server.
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
lun 8 mag 2006 - 10:58
ciao
hai verificato nei criteri di protezione l' history della password ( ossia quante password diverse sono necessarie per riutilizzare la stessa pwd )? Mi viene in m mente cio poiche' hai detto che hai provato a eseguire il cambio pwd direttamente da sistema..
( Ps. come avrai notato il codice postato si riferiva ad account locale)
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
mar 9 mag 2006 - 14:18
La verifica della storia delle password so che va bene, perchè ho impostato una password che per quell'utente non avevo mai utilizzato.
Dato che la password è corretta, il dubbio che mi viene è che il messaggio di errore che ritorna la procedura in realtà non sia corretto, ma sia riferito a un qualche problema sul server.
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
mar 9 mag 2006 - 17:12
Ciao
ho provato a simulare l' errore in locale e l'unico modo che ho trovato e' quello di settare la minimun pwd age diversa da zero . Con la minimum pwd age settata a 1 lo script va in errore
800708C5 diversamente lo script cambia le pwd senza problemi.
(N.B da AD piu che un cambio PWd si effettua un reset pwd)
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
mer 10 mag 2006 - 09:44
Ho fatto una prova cercando di settare la MinPasswordAge a 0, ma mi dà un altro messaggio di errore: 8000500F.
Ciao!
revontulet
Profilo
| Junior Member
106
messaggi | Data Invio:
mer 10 mag 2006 - 16:38
il codice 8000500F (non documentato i.e in MSDN vedi
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/common_errors.asp
dovrebbe comunque essere riferito a una proprieta' inesistente
( i.e i puo' riprodurre con uno script del tipo :
Set UserObj = GetObject("WinNT://" & strcomputer & "/" & struser & ",user")
UserObj.Put "conigliomannaro",0
CodiceRitorno = err.number
msgbox "prop non esiste hex = " & Hex(CodiceRitorno)
objLastSet = UserObj.Get ("pwdLastSet")
CodiceRitorno = err.number
msgbox "prop dovrebbe esistere hex = " & Hex(CodiceRitorno)
objUserFlags = UserObj.Get("UserFlags")
msgbox "valore flag " & cstr(objUserFlags) & " " & hex(objUserFlags)
Err.clear
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10201
objPasswordExpirationFlag = ADS_UF_DONT_EXPIRE_PASSWD
UserObj.Put "userFlags", objPasswordExpirationFlag
CodiceRitorno = err.number
msgbox "userFlags hex = " & Hex(CodiceRitorno)
UserObj.SetInfo
dove Userflags and PwdLastset ( setttata a -1) si riferiscono al "pwd not expire"
in altri termini potrebbe essere un qualcosa in AD ma io insisterei nel riprovare il codice con un utente nuovo, compresa la prova di connessione effettiva dell 'utente e la verifica dell' applicabilita del "not expire " o di altri valori da script come il
UserObj.Put "PasswordExpired", 1
BiBi
Profilo
| Junior Member
158
messaggi | Data Invio:
gio 11 mag 2006 - 15:11
Ho contattato l'amministratore della rete per fargli modificare il parametro direttamente sulla configurazione di ActiveDirectory.
Ho fatto una prova ed ora funziona tutto meravigliosamente.
Grazie mille per il tuo aiuto, mi hai risolto una bella problematica!!!
Ciao!
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !