Hola, hoy voy a traerles un script para detectar que usuarios de nuestro tenant tiene activado el fuera de oficina con datos adicionales.
Antes que nada debemos conectarnos via Powershell a Microsoft Exchange Online. Si no saben como hacerlo les dejo la nota que escribí: Conectarse a Microsoft Exchange Online via Powershell.
Luego debemos generar un archivo .ps1 de Powershell con el siguiente código. Tengan en cuenta que hay dos modos de mostrar los resultados.
#Conectate al servicio:
Connect-ExchangeOnline
# Obtenemos todos los buzones de usuario
$mailboxes = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited
# Creamos una lista vacía para los resultados
$resultados = @()
foreach ($mailbox in $mailboxes) {
$oooSettings = Get-MailboxAutoReplyConfiguration -Identity $mailbox.UserPrincipalName
if ($oooSettings.AutoReplyState -eq "Enabled") {
$resultados += [PSCustomObject]@{
Usuario = $mailbox.DisplayName
UPN = $mailbox.UserPrincipalName
Estado = $oooSettings.AutoReplyState
MensajeInterno = $oooSettings.InternalMessage
MensajeExterno = $oooSettings.ExternalMessage
Inicio = $oooSettings.StartTime
Fin = $oooSettings.EndTime
}
}
}
#Tenemos 2 modos de mostrar los resultados:
# 1. Mostrar en consola o 2. Exportar a un archivo CSV. De momento, solo exportamos a CSV.
# Mostramos los resultados en una tabla
#$resultados | Format-Table -AutoSize
# Exportar a archivo CSV
$archivo = "Usuarios_Fuera_De_Oficina.csv"
$resultados | Export-Csv -Path $archivo -NoTypeInformation -Encoding UTF8
Write-Host "Exportación completada. Archivo generado: $archivo"
En este ejemplo como decidimos exportar el archivo a CSV, el resultado será un archivo con los usuarios que tienen el Out of Office activado.

Los datos a incorporar pueden ser menos dependiendo de lo que precisen.
Espero que les haya sido de utilidad.
Saludos.
Alejandro.