4 votos

Powershell asistencia para la Limpieza de Active Directory

Acabo de empezar un contrato para limpiar un sistema de Directorio Activo para una empresa grande. Me dijeron que iba a estar bastante ocupado con el trabajo, pero después de revisar el sistema y ver cómo desorganizado y desordenado es, me di cuenta de que no voy a ser capaz de cumplir con mis deberes a su máxima capacidad. Esencialmente, esta empresa tiene demasiadas cuentas que no están activos pero no puede ser eliminado todavía. Quiero realizar un "Grito de Prueba" para ciertas cuentas y eliminar más tarde. Si esto fue sólo un par de miles de cuentas inactivas sería una historia, pero por desgracia es bastante unos pocos miles (no he tomado un número exacto, pero es de más de 20.000). Tenía curiosidad si alguien sabía de una manera de ordenar a través de esta información en forma automatizada otra que el uso de Hiena para obtener informes y, a continuación, ir a través de ellos uno por uno.

7voto

TheCleaner Puntos 22495

Voy a presumir que su pregunta se encuentra en la búsqueda de cuentas inactivas.

Yo uso JoeWare s Oldcmp herramienta. http://www.joeware.net/freetools/tools/oldcmp/index.htm aún después de todos estos años.

Se puede encontrar inactiva las cuentas de AD mirando contraseña de edad y, específicamente, LLTS = lastLogonTimestamp

Es lo suficientemente simple como para al menos empezar y más fácil de powershell. A continuación, deshabilitar esas cuentas y el uso de ADUC para crear una consulta personalizada de la ventana de movilidad cuentas. De esa manera usted no tiene que mover cualquier cosa que pueda necesitar re-habilitado más tarde.

PERO...estoy de acuerdo con esperanzas y Mfinni, y diría que mejor establecer claramente qué es lo que planea hacer con la administración ANTES de la implementación de nada.

1voto

krisFR Puntos 5107

Puedo usar Powershell para hacerlo, llamando a la lastlogondate inmueble.

Aquí volvemos todos samaccountname que tienen un último inicio de sesión fecha más de 30 días (desde hoy) :

$datenow = Get-date
$treshold=$datenow.AddDays(-30)
$users=Get-ADuser -Filter * -properties samaccountname,lastlogondate
foreach($user in $users) {
  $lastlogon = $user.lastlogondate
  if($lastlogon -lt $treshold) { 
    echo $user.samaccountname
    echo $user.lastlogondate
    echo "------------------------------------------------"
  }
}

A partir de aquí, usted puede :

  • Ajustar la fecha treshold a sus necesidades
  • Deshabilitar la Cuenta de AD (Disable-ADAccount)
  • Cualquier cosa que usted desee (al menos, la mayoría de las cosas)

0voto

uSlackr Puntos 5287

Buenos consejos sobre: control de cambios y documentación de permisos. Me gustaría probar un enfoque como este

Crear un inventario de cuenta que incluye el atributo como lastLogonTimestamp, pwdLastSet, whencreated y whenchanged. Usted puede tomar todo esto con Powershell y get-ADUser. Estoy seguro de que muchos de secuencia de comandos existen alrededor de la web de TechNet repositorio de scripts es un buen lugar para empezar

Utilice el inventario para localizar cuentas de destino.

Antes de hacer un cambio en la AD, considere la posibilidad de probar todo en un entorno de prueba. Hay algunas secuencias de comandos en el repositorio que te permitirá hacer una copia de AD (unidades Organizativas, Usuarios y grupos) en el entorno de prueba.

0voto

Trondh Puntos 3401

Hice un simliar tarea de unos pocos años atrás, aunque en una escala mucho menor de lo que usted está enfrentando. La primera cosa que hicimos fue implementar ManageEngine de ANUNCIOS de la Auditoría de producto con el fin de conseguir una manija en las cuentas. Probablemente nos vamos a esta carrera por un par de semanas con el fin de generar métricas antes de que hiciéramos algo más. A partir de ahí, hemos sido capaces de rastrear donde cuenta de los inicios de sesión, y hemos sido capaces de lidiar con ellos de una manera controlada.

ANUNCIO de Auditoría es bastante un producto de bajo costo y los informes de excel son muy buenos así que estábamos muy contentos con nuestra decisión de ir con ella.

0voto

Adam Brook Puntos 86

Aquí están algunas de las soluciones a continuación. No muy seguro de si es lo que usted está buscando.

Ejemplo #1: Esta será la búsqueda de la unidad organizativa a los Usuarios en el dominio de dominio.local utilizando la fecha especificada. Puede cambiar estas abajo de salida y el nombre de Usuario y LastLogonTimestamp como:

Usuario1

13/2/2014

Usuario2

12/12/2013

Import-Module Active Directory
$lastdate = "09 April 2014 23:59:59"
$users = Get-ADUser -Filter * -SearchBase "ou=users,dc=domain,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select     CN,@{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}}
foreach ($user in $users) {
if ($user.lastlogontimestamp -lt $lastdate) {
echo $user.CN
echo $user.lastlogontimestamp.tostring('d/M/yyyy')
}
}

Ejemplo #2: Esta será la búsqueda de la unidad organizativa a los Usuarios en el dominio de dominio.local. A continuación, Exportar a un archivo CSV a continuación, puede ver sus datos un poco mejor.

Import-Module ActiveDirectory
Get-ADUser -Filter * -SearchBase "ou=users,dc=domain,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select    CN,@{N='lastLogonTimestamp'; E={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | Export- CSV -NoType .\last.csv

Con el Ejemplo 2, se podría elaborar una lista de los usuarios que van a eliminar/desactivar en CSV / Excel e ir a la Administración con estos.

Espero que esto ayude!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: