MItch


220 Ready
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Resettare la password da remoto per utenti locali e/o di dominio

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.
Categoria: Scripting
sabato, 13 mag 2006 Ore. 12.12












aprile 2024
lmmgvsd
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345
  • Views Home Page: 266.302
  • Views Posts: 481.155
  • Views Gallerie: 107.635
  • n° Posts: 188
  • n° Commenti: 122
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003