none
Deshabilitar cuentas inactivas automaticamente RRS feed

  • Pregunta

  • Primeramente saludarles

    Quisiera pedirles su colaboración ya que necesito un script que pueda deshabilitar automaticamente las cuentas que no hayan iniciado sesión ya sea en 30 o 60 días, como tambien obtener el reporte de estos usuarios y como podria hacer para que se automatice esta tarea.

    Desde ya gracias por su colaboración

    viernes, 7 de agosto de 2015 14:42

Todas las respuestas

  • Hola "Dan Debian" como estas,

     Puedes usar,

     $now=get-date
     $daysSinceLastLogon=60

     Get-QADUser -sizeLimit 0 | where {
       $_.lastlogontimestamp -and
         (($now-$_.lastlogontimestamp).days -gt $daysSinceLastLogon)
     } | Format-Table Name, LastLogonTimeStamp

     //////////////////////////////////////////////////////////////////////////////////////////////////

     $NumDays = 0
     $LogDir = ".\Users-Last-Logon.csv"

     $currentDate = [System.DateTime]::Now
     $currentDateUtc = $currentDate.ToUniversalTime()
     $lltstamplimit = $currentDateUtc.AddDays(- $NumDays)
     $lltIntLimit = $lltstampLimit.ToFileTime()
     $adobjroot = [adsi]''
     $objstalesearcher = New-Object System.DirectoryServices.DirectorySearcher($adobjroot)
     $objstalesearcher.filter = "(&(objectCategory=person)(objectClass=user)(lastLogonTimeStamp<=" + $lltIntLimit + "))"

     $users = $objstalesearcher.findall() | select `
     @{e={$_.properties.cn};n='Display Name'},`
     @{e={$_.properties.samaccountname};n='Username'},`
     @{e={[datetime]::FromFileTimeUtc([int64]$_.properties.lastlogontimestamp[0])};n='Last Logon'},`
     @{e={[string]$adspath=$_.properties.adspath;$account=[ADSI]$adspath;$account.psbase.invokeget('AccountDisabled')};n='Account Is Disabled'}

     $users | Export-CSV -NoType $LogDir

     //////////////////////////////////////////////////////////////////////////////////////////////

     Get-ADUser -Filter {Name -eq "Administrator"} -Properties * | Select-Object Name, msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon

     Get-ADUser -Filter * -Properties * | Select-Object Name, msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon | Sort-Object -Descending msDS-FailedInteractiveLogonCountAtLastSuccessfulLogon

     https://gallery.technet.microsoft.com/scriptcenter/Get-Active-Directory-user-246f17c7

    Determining a User's Last Logon Time
    https://technet.microsoft.com/en-us/library/dd378867(v=ws.10).aspx

    ////////////////////////////////////////////////////////////////////////////////////

    $logondate = (get-date).adddays(-30)
    Get-ADUser -Filter{lastlogon -le $logondate}

    Get-ADUser -Filter{lastlogon -le $logondate} | fl name | Out-File c:\final.htm

    Espero sea de ayuda. Saludos.


    sábado, 8 de agosto de 2015 2:42