Cambiar contraseñas periódicamente a varios usuarios
Un usuario me preguntaba si era posible automatizarlo. Esta es la respuesta que le dí:
Esto lo puedes hacer mediante un script .vbs que ejecutarás en el servidor.
Lo puedes poner en el escritorio, editarlo para cambiar la password y ejecutarlo. La complejidad de la clave debe coincidir con la que tengas establecida en la GPO del dominio, donde además tendrás que establecer la frecuencia mínima del cambio de contraseña a 1 día (deberás probarlo, pues quizá tengas que reducirlo a 0 para que te permita el cambio todos los días a la misma hora, ya que si lo ejecutas de forma manual es posible que no hayan transcurrido 24 horas exactas desde el cambio del día anterior). El script sería similar al siguiente:
Set clave = «LaContraseña99!#» Set objUser = GetObject _ («LDAP://cn=usuario1,ou=visitantes,dc=dominio,dc=local«) objUser.SetPassword clave Set objUser = GetObject _ («LDAP://cn=usuario2,ou=visitantes,dc=dominio,dc=local«) objUser.SetPassword clave
y así. Esto si les quieres poner la misma clave a todos. Por supuesto, si son muchos el código se puede hacer más elegante, con un bucle que lea los nombres de usuarios de la OU y les vaya cambiando las claves. Si en vez de que tengan todos la misma las quieres diferentes, en lugar de especificarla al principio les pones en cada línea la que quieras.
Y si lo quieres automatizar, podrías crear un fichero de texto con las claves de todo el mes en el que cada línea tenga el día del mes y las claves correspondientes a los usuarios, separadas por comas. Al principio del script haces una lectura del fichero en la que busques la línea cuyo primer campo coincida con el día del mes en que estás, y el segundo campo sería la contraseña a establecer a los usuarios. De esta forma puedes programar la ejecución del .vbs todos los días a primera hora y sólo tendrás que actualizar una vez al mes el fichero de contraseñas. Quedaría algo así como lo siguiente:
Const ForReading = 1 strComputer = «.»
Set objWMIService = GetObject(«winmgmts:\\» & strComputer & «\root\cimv2»)
Set colItems = objWMIService.ExecQuery(«Select * from Win32_LocalTime»)
For Each objItem in colItems
hoy = objItem.Day
Next
Set objFSO = CreateObject(«Scripting.FileSystemObject»)
Set objTextFile = objFSO.OpenTextFile _
(«c:\scripts\passwords.txt», ForReading)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline arrClaves = Split(strNextLine , «,»)
If arrClaves(0) = hoy then
clave1 = arrClaves(1)
clave2 = arrClaves(2)
clave3 = arrClaves(3)
clave4 = arrClaves(4)
End If
Next
Loop
Set objUser = GetObject _
(«LDAP://cn=usuario1,ou=visitantes,dc=dominio,dc=local«)
objUser.SetPassword clave1
Set objUser = GetObject _
(«LDAP://cn=usuario2,ou=visitantes,dc=dominio,dc=local«)
objUser.SetPassword clave2 …
Comentarios recientes