none
Windows Server 2012 R2 - Bloquear cuenta de Active Directory por Directiva luego de un tiempo de inactividad. RRS feed

  • Pregunta

  • Hola,

    Necesito conocer si existe alguna forma en Windows Server 2012 R2 por directiva de seguridad para bloquear las cuentas de usuarios automáticamente luego de un tiempo x de inactividad, o sea que si un usuario se va de la empresa por ejemplo, que automáticamente se bloquee la cuenta al transcurrir x días sin loguearse.

    Muchas gracias..

    jueves, 24 de enero de 2019 22:25

Respuestas

  • Gracias rBlacksmith por su respuesta, no me resolvió el problema, pero si me dió una orientación sobre lo que debía estudiar.

    Luego de una larga investigación y recopilación de varias fuentes, a las que doy las gracias, acá dejo el scrip de PowerShell que me resolvió el asunto.

    While($True)

    {

    $Usr_NoLogin=Get-ADUser -Filter * -Properties * | Select SamAccountName,DistinguishedName,@{Name="LastLogon";Expression={[datetime]::FromFileTime($_."lastlogon")}},@{Name="LastLogin";Expression={[datetime]::FromFileTime($_."lastlogon").ToString('dd-MM-yyyy H:mm:ss')}} | ? {$_.LastLogon -lt ((Get-Date).AddDays(-30)) -And $_.LastLogin -ne "31-12-1600 19:00:00"}

    $Usr_NoLogin | Foreach {

    Set-ADUser $_.SamAccountName -Enabled $false}

    Start-Sleep 86400

    }


    Breve Explicación:

    Creo un ciclo para q no tenga q correr el scrip a mano, por lo que siempre se esta corriendo, resaltar que:

    SamAccountName, LastLogon y LastLogin

    Esta variable nos permite buscar el nombre de usuario usando el valor SamAccountName, y notemos que las variables LastLogon y LastLogin tiene añadido una conversión de tiempo ya que cuando generamos nuestros reportes este valor está en formato de tiempo.

    y donde

    GetDate
    En la variable GetDate indicamos la cantidad de días que debe ser deshabilitado el usuario cuando no se ha demostrado que ha iniciado ningún login.

    En este caso ((Get-Date).AddDays(-30)) lo utilizo para determinar las cuentas que tienen mas de 30 días de inactividad.

    Luego a cada cuenta que encuentre con la característica de no haberse logueado en mas de 30 días, la deshabilito.

    Y por último pongo el ciclo a dormir por 86400 segundos, o lo que es lo mismo 24*60*60 = 86400, o sea 1 dia.

    Espero que les sirva


    Saludos Orlando

    viernes, 25 de enero de 2019 18:08

Todas las respuestas

  • Hola Orlando,

    No hay nada directo que me suene, una posible solución es una tarea diaria que ejecute un script de powershell que mire las cuentas que lleven x dias inactivas y que las ponga en disable. No es muy complicado y tienes varios ejemplo por internet, el siguiente ejemplo te muestra todos los usuarios inactivos los últimos 90 días

    Search-ADAccount -UsersOnly -AccountInactive -TimeSpan 90
    Saludos.


    viernes, 25 de enero de 2019 8:05
  • Gracias rBlacksmith por su respuesta, no me resolvió el problema, pero si me dió una orientación sobre lo que debía estudiar.

    Luego de una larga investigación y recopilación de varias fuentes, a las que doy las gracias, acá dejo el scrip de PowerShell que me resolvió el asunto.

    While($True)

    {

    $Usr_NoLogin=Get-ADUser -Filter * -Properties * | Select SamAccountName,DistinguishedName,@{Name="LastLogon";Expression={[datetime]::FromFileTime($_."lastlogon")}},@{Name="LastLogin";Expression={[datetime]::FromFileTime($_."lastlogon").ToString('dd-MM-yyyy H:mm:ss')}} | ? {$_.LastLogon -lt ((Get-Date).AddDays(-30)) -And $_.LastLogin -ne "31-12-1600 19:00:00"}

    $Usr_NoLogin | Foreach {

    Set-ADUser $_.SamAccountName -Enabled $false}

    Start-Sleep 86400

    }


    Breve Explicación:

    Creo un ciclo para q no tenga q correr el scrip a mano, por lo que siempre se esta corriendo, resaltar que:

    SamAccountName, LastLogon y LastLogin

    Esta variable nos permite buscar el nombre de usuario usando el valor SamAccountName, y notemos que las variables LastLogon y LastLogin tiene añadido una conversión de tiempo ya que cuando generamos nuestros reportes este valor está en formato de tiempo.

    y donde

    GetDate
    En la variable GetDate indicamos la cantidad de días que debe ser deshabilitado el usuario cuando no se ha demostrado que ha iniciado ningún login.

    En este caso ((Get-Date).AddDays(-30)) lo utilizo para determinar las cuentas que tienen mas de 30 días de inactividad.

    Luego a cada cuenta que encuentre con la característica de no haberse logueado en mas de 30 días, la deshabilito.

    Y por último pongo el ciclo a dormir por 86400 segundos, o lo que es lo mismo 24*60*60 = 86400, o sea 1 dia.

    Espero que les sirva


    Saludos Orlando

    viernes, 25 de enero de 2019 18:08