Questo script è stato pubblicato nella sezione Scripts del portale WindowServer.it, la Community Italiana dei Sistemisti Windows.Un ringraziamento a tutta la Community!Capita spesso il bisogno di poter resettare la password di utenti locali (sopratutto l'admin built-in) in modo che gli utenti non possano eseguire il logon localmente.
Ho scritto questo script proprio perchè avevo questa necessità, e ho cercato di renderlo elastico in modo che possa essere usato anche per gli utenti di dominio.
La sintassi è molto semplice:
ResetPassword /computer:nomecomputer /user:nomeutente /pwd:nuovapassword [/creduser:nome utente con cui eseguire lo script] [/credpwd:password dell'utente] [/log:percorsofiledilog]"
Un semplice esempio può essere:
ResetPassword.vbs /computer:wvs-mitch /user:administrator /pwd:P1pp0@01
Se vogliamo utilizzarlo per utenti di dominio, basta inserire come nome computer il nome di un domain controller.
Come si può capire dalla sintassi, gli switch /creduser, /credpwd e /log sono opzionali.
Se vogliamo invece eseguire lo script per più computer o per più utenti ci basta creare un semplice fil di testo con l'elenco dei computer o degli utenti e utilizzare il comando for, come di seguito:
for /f %%i in (ListaComputer.txt) do ResetPassword.vbs /computer:%%i /user:administrator /pwd:nuovapassword /log:"C:\ResetPassword.log"
Appena avrò tempo a disposizione intendo inserire un'altro switch che preleva i computer e/o gli utenti direttamente dal database di Active Directory.
Eccovi lo script:
'---------------------------------------------------------------------------------------------------------
Option Explicit
Dim strOut
Dim objArgs
Dim objfso
Dim objFile
Dim ArgComputer,ArgUser,ArgPwd,ArgUserCred,ArgPwdCred,ArgLogPath
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
Wscript.Echo "File: ResetPassword.vbs"
Wscript.Echo "Autore: Michele Betelli"
Wscript.Echo "Scopo: Resetta la password di un utente locale o di dominio"
Wscript.Echo "Sintassi: ResetPassword /computer:nomecomputer /user:nomeutente /pwd:nuovapassword [/creduser:nome utente con cui eseguire lo script] [/credpwd:password dell'utente] [/log:percorsofiledilog]"
Wscript.Quit
End If
ArgPwd = objArgs.Named("pwd")
ArgUser = objArgs.Named("user")
ArgLogPath = objArgs.Named("log")
ArgPwdCred = objArgs.Named("credpwd")
ArgUserCred = objArgs.Named("creduser")
ArgComputer = objArgs.Named("computer")
If ArgComputer = "" Or ArgUser = "" Or ArgPwd = "" Then
Wscript.Echo "Il numero dei parametri non è corretto!"
Wscript.Quit
End If
strOut = Change_Password(ArgComputer,ArgUser,ArgPwd,ArgUserCred,ArgPwdCred)
If ArgLogPath <> "" Then
Set objFso = CreateObject("Scripting.FileSystemObject")
If Not objFso.FileExists(ArgLogPath) Then objFso.CreateTextFile ArgLogPath, True
Set objFile = objFso.OpenTextFile(ArgLogPath, 8, True)
objFile.WriteLine Now() & " - " & strOut
objFile.Close
Set objFile = Nothing
Else
WScript.Echo strOut
End If
Set objArgs = Nothing
Function Change_Password(Computer,User,Password,strUserCred,strPasswordCred)
Dim dso
Dim objUser
Dim strPath
Dim strDesc
Dim strLog
On Error Resume Next
strPath = "WinNT://" & Computer & "/" & User & ",user"
If strUserCred <> "" Then
Set dso = GetObject("WinNT:")
Set objUser = dso.OpenDSObject(strPath, strUserCred, strPasswordCred, 1)
Else
Set objUser = GetObject(strPath)
End If
If err.Number <> 0 Then
Select Case Err.Number
Case "-2147024843"
strDesc = "Il computer '" & Computer & "' non è raggiungibile!"
Case "-2147022675"
strDesc = "L'utente '" & User & "' non esiste!"
Case Else
strDesc = err.description
End Select
strlog = Computer & "\" & User & ": non è disponibile! Error " & err.number & ": " & strDesc
On Error GoTo 0
Else
objUser.SetPassword Password
objUser.SetInfo
If err.Number <> 0 Then
Select Case Err.Number
Case "-2147022651"
strDesc = "La nuova password non è conforme alle policy applicate!"
Case Else
strDesc = err.description
End Select
strlog = Computer & "\" & User & " operazione non riuscita! Error " & err.number & ": " & strDesc
On Error GoTo 0
Else
strlog = Computer & "\" & User & " operazione riuscita!"
End If
End If:
Change_Password = strlog
End Function
'---------------------------------------------------------------------------------------------------------
E' possibile scaricare lo script direttamente da
qui.
Per qualsiasi quesito riguardante questo script vi prego di aprire un topic nel forum
Scripting sul portale
WindowServer.it.