Parte de mi trabajo es asegurarme de que para las computadoras en una unidad organizativa específica, lo que realmente está en uso = lo que figura en AD = lo que figura en SCCM. Esto es para un entorno con 250.000 PC, pero me preocupan específicamente las 70.000 de un departamento. Es bastante fácil comparar AD con SCCM, pero es más difícil realizar un seguimiento de computadoras que realmente no existen. Estoy tratando de pensar en formas creativas de resolver esto.
mi pregunta es: ¿Sería una buena manera de encontrar máquinas inexistentes para consultar AD con Powershell para computadoras que no han iniciado sesión en X cantidad de días?
Pensé en una tarea mucho más complicada en PowerShell de la siguiente manera: extraiga los nombres de host dns de AD. Haga ping a todos los hosts en mi unidad organizativa y, para tener éxito, elimínelos de la lista. Ejecute esto, por ejemplo, cada 6 horas durante una semana y continúe eliminando las máquinas que hayan tenido éxito en el ping. Las computadoras portátiles tendrían que manejarlas de manera diferente.
¿Alguna otra idea, sugerencia, etc.?
Respuesta1
Siguiendo una variación de la sugerencia integral de Patrick, usaría el LastLogontimeStamp
atributo replicado para limitar la búsqueda:
Import-Module ActiveDirectory
$threshold = (Get-Date).AddDays(-44)
$computers Get-ADComputer -Filter * -SearchBase "ou=desiredou,dc=domain,dc=tld" -Properties LastLogontimeStamp
$oldComps = $computers | where {[Date.Time]::FromFileTime($_.lastlogontimestamp) -lt $threshold}
$oldComps
Luego retendrá todas las computadoras que no hayan iniciado sesión en al menos 30 días.
Es un poco contradictorio con un umbral de 44 días, pero para evitar una avalancha de actualizaciones de replicación LastLogontimeStamp
, el atributo solo se actualiza si su valor tiene más de 9 días. Si el valor tiene entre 9 y 14 días de desactualización, un proceso aleatorio determina si se actualiza o no.
Aquí hay una gran explicación:http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works.aspx
Respuesta2
Parece que necesitas algo comoviejocmp:http://www.joeware.net/freetools/tools/oldcmp/
Esto busca en el dominio o unidad organizativa especificada las máquinas que no han iniciado sesión durante la última vez.Xdías y le proporciona informes o la posibilidad de desactivar esas cuentas de computadora.
La herramienta y la representación en Active Directory solo representan lo que el dominio sabe, por lo que aún necesita crear un proceso de generación de informes.externoal entorno de Active Directory para permitirle realizar un seguimiento de las máquinas que informan que no se han utilizado para verificar que realmente abandonaron la organización y deben eliminarse. Un buen ejemplo aquí son, de hecho, las computadoras portátiles: las herramientas pueden informar que una computadora portátil está fuera de uso cuando en realidad esto oculta el hecho de que la computadora portátil simplemente está en uso fuera de línea.
Se encuentran disponibles enfoques similares que involucran informes en SCCM para investigar el momento en que una máquina pudo emitir un latido por última vez; Siempre que las máquinas tengan clientes SCCM en funcionamiento, podría decirse que este sería un mejor enfoque que generar un informe e intentar hacer ping a ellos, una técnica que requeriría mucha mano de obra y sería propensa a resultados falsos positivos.
Respuesta3
Un objeto AD de computadora tiene una marca de tiempo de LastLogon, que le brinda un indicador útil del estado actual de una computadora.
Si puede instalar cmdlets de terceros, entonces elBúsqueda de directorio activoLos cmdlets son increíblemente útiles.
$result = @()
$OU = "DC=ncp,DC=co,DC=uk"
Foreach($computer in (Get-QADComputer -SearchRoot "$ou" -sizelimit 0))
{
$result += "$((Get-QADComputer $computer -IncludeAllProperties).lastLogon), $computer"
}
$result enumerará todas sus computadoras en la unidad organizativa especificada y su última fecha de inicio de sesión de esta manera:
06/10/2013 08:48:25, NATTHN21$
05/13/2011 14:54:04, NATTHN02$
06/10/2013 08:42:51, NATRHN01$
06/10/2013 08:45:38, NCPHON01$
Debería ejecutar esto en todos los DC en los que esta computadora pueda iniciar sesión. Para una organización de su tamaño esto probablemente no sea práctico.
Como medida alternativa. La propiedad del objeto 'whenChanged' en los objetos AD de su computadora es la contraseña de la cuenta de la máquina. Esto se actualiza automáticamente después de 30 días (por defecto en Win 2K y versiones posteriores, por lo general. Verificar el objeto de política de grupo de dominio predeterminado puede confirmar esto).
Si encuentra cuentas de computadora donde 'whenChanged' tiene más de 30 días, entonces se trata de máquinas que no iniciaron sesión en este período. Esto funciona bien para redes múltiples de DC más grandes, ya que esta figura se replica donde no está 'lastLogon'.
Simplemente modifique la línea en el script anterior para eliminar '.lastLogon' y reemplácela con '.whenChanged'
Si no puede instalar Quest AD, necesitará usar una máquina con RSAT instalado (o un DC) y usar el cmdlet Get-ADComputer (escriba 'Import-Module ActiveDirectory').
Una tercera opción para rastrear el uso futuro sería utilizar un script de inicio de sesión. Hice esto con un cliente hace unos años y funcionó bien, aunque estábamos en un par de cientos de máquinas, no ~70K.
En ese momento, nuestro script de inicio de sesión era un archivo .BAT. Cree un nuevo .BAT en NETLOGON con la siguiente línea (por ejemplo, LogonTrack.BAT)
::LogonTrack.BAT
ECHO %date% >Z:\%computername%
y al final de cualquiera de los archivos por lotes de inicio de sesión que puedan utilizar sus 70.000 usuarios, agregue una línea
call LogonTrack.BAT
Esto crea un archivo con el nombre de la computadora y la fecha del archivo es el último inicio de sesión en la ubicación asignada.
No recomendaría esto, pero podrías auditar los registros de eventos para obtener esta información, aunque generalmente evito bucear en registros siempre que sea posible. necesitaríasEvento 4624.
Finalmente también usoLANSweepera un cliente, lo cual es genial. Tiene excelentes informes sobre computadoras antiguas. Sin embargo, como producto pago que requiere una instalación separada y un servidor, puede que no sea bueno para usted. Además, para sistemas de 250K necesitarías un backend bastante potente, no una máquina virtual reutilizada que estuviera por ahí.