Hola,
La opción 2 definitivamente no debe ser tenida en cuenta, dado que representa una brecha gigante de seguridad.
Para la opción 1 te recomiendo usar este script (.vbs): Ejecútalo desde un controlador de dominio con usuario Domain Admin.
' -----------------------------------------------'
Option Explicit
Dim objOU, objUser, objRootDSE
Dim strContainer, strDNSDomain
Dim intCounter, intPwdValue
' Bind to Active Directory Domain
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")
' -----------------------------------------------'
' Important change OU= to reflect your domain
' -----------------------------------------------'
strContainer = "OU=Usuarios"
strContainer = strContainer & strDNSDomain
intCounter = 0
' Here we force a change of password at next logon
intPwdValue = 0
' Loop through OU=, resetting all user accounts
set objOU =GetObject("LDAP://" & strContainer )
For each objUser in objOU
If objUser.class="user" then
objUser.Put "PwdLastSet", intPwdValue
objUser.SetInfo
End If
intCounter = intCounter +1
Next
' Optional section to record how many accounts have been set
WScript.Echo "PwdLastSet = " & intPwdValue _
& vbCr & "Accounts changed = " & intCounter
WScript.Quit
' End of Sample PwdLastSet VBScript}
Esto hará que los usuarios cambien obligatoriamente el password en su próximo inicio de sesión.
Parámetro importante: strContainer = "OU=Usuarios"
Debes poner la OU que contiene a los usuarios a los cuales debes forzar cambio de pwd.