Para la administración de Office 365 y de nuestra base de usuarios, debemos ahora más que nunca debido a las regulaciones en cuanto a privacidad, retención de datos,etc... tener claro que datos debemos eliminar o modificar. Para ello una de las estrategias es conocer qué usuarios llevan un tiempo determinado sin entrar a sus cuentas para proceder a la eliminación de las mismas, enviar recordatorios o similares. Esto que podría parecer trivial, no lo es tanto ya que el más obvio cmdlet provee datos no del todo reales y puede llevar a errores. Vamos a ver cómo podemos obtener el último acceso real a una cuenta de correo a través de Powershell.
Por lógica de entre los cmdlets disponibles de Exchange Online tenemos el Get-MailboxStatistics y dentro del mismo la propiedad LastLogonTime, esto lo podríamos lanzar con
Get-MailboxStatistics -identify [email protected] | select LastLogonTime
Como decia, por lógica eso debería mostrar el último login del usuario, pero si comprobamos con algún usuario que estemos seguro que no ha entrado en meses o años vemos que posiblemente la fecha que nos devuelva sea la de hoy mismo. El problema es que esa propiedad refleja no tan solo accesos reales humanos sino tambien accesos por parte de procesos automáticos, simplemente el que un usuario aparezca en un listado de usuarios provocará que se acceda “por detrás” a esa cuenta y marque un LastLogonTime..
Debido a la falta de documentación, tenemos que analizar las diferentes propiedades disponibles del cmdlet Get-MailboxStatistics. Entre las propiedades que se muestran encontramos las siguientes
- LastLogonTime
- LastLogoffTime
- LastInteractionTime
- LastUserAccesTime
- LastLoggedOnUserAccount
- LastUserActionTime
LastLogonTime y LastLogOffTime
Como hemos visto el dato que devuelven esas propiedades se ve afectado por eventos automáticos, por lo que no son datos fiables para determinar la actividad real de un usuario
LastInteractionTime
En principio este valor se ve modificado por cualquier evento en la cuenta, tanto humano como automático por ejemplo cuando la cuenta recibe un email,etc..de todas maneras esta claro que no podemos basarnos en el, ya que por ejemplo para algunas cuentas muestra información del año 1601...
LastInteractionTime
-------------------
01/01/1601 01:00:00
LastUserAccessTime y LastLoggedOnUserAccount
En el caso de estas dos propiedades los valores siempre están en blanco por lo que obviamente tampoco nos son de momento de ninguna utilidad
LastUserActionTime
Afortunadamente en este último caso, esta propiedad de LastUserActionTime si que refleja realmente actividad humana por parte del usuario, el logueo, envío de emails, etc... A diferencia de los anteriores por el momento esa fecha no se ve afectada por procesos automáticos. Podemos obtener esta información de la siguiente manera
Get-MailboxStatistics -identify [email protected] | select LastUserActionTime
Notar en este punto que ese dato no es en tiempo real, por las pruebas que hemos realizado puede tardar 2-3 días en mostrar información, de nuevo no hay documentación sobre esto. Pero por lo general vamos a buscar datos de usuarios que potencialmente haga tiempo que no tengan actividad más que revisar la actividad más reciente, para lo cual tenemos otras herramientas como el audit o el mail flow. Espero que os sea de utilidad