En un escenario de migración o de actualización de nuestros servidores Exchange, necesitaremos por temas de compatibilidad y para mantener el correcto funcionamiento para nuestros usuarios, obtener las versiones de Outlook utilizadas.
Si bien no es un proceso complejo, si requiere ejecutar un análisis de los logs de RPC en los servidores que utilizamos con Client Access. Para esto , primero necesitamos conocer la ubicación de la instalación de Exchange. Para esto basta con ejecutar el siguiente comando en una ventana de PowerShell.
$env:exchangeinstallpath
Ahora que tenemos la ubicación, agregamos a la misma la ubicación de los logs de RPC, que se encuentran por defecto dentro de la instalación de Exchange en la carpeta “\Logging\RPC Client Access”, y lo guardamos como una variable de la siguiente manera.
$rpcLogs = "D:\Program Files\Microsoft\Exchange Server\V14\Logging\Rpc Client Access"
Ahora que ya tenemos los logs como variable, filtramos para obtener un resultado mas acotado, por ejemplo los últimos 14 días. Para eso ejecutamos el siguiente código.
$archivos = Get-ChildItem $rpcLogs | Where-Object {$_.LastWriteTime -ge (Get-Date).AddDays(-14)}
Una vez ejecutado el comando, validamos que la información fue filtrada de manera correcta viendo el contenido de la variable con el comando Write-Output.
Ahora que ya tenemos los archivos a analizar, debemos importar la data para procesarla. ejecutamos el siguiente comando
$logs = $archivos | ForEach {Get-Content $_.FullName} | Where-Object {$_ -notlike '#*'}
A continuación necesitamos convertir los datos importados desde los logs a objetos de Powershell
$resultados = $logs | ConvertFrom-Csv -Header date-time,session-id,seq-number,client-name,organization-info,client-software,client-software-version,client-mode,client-ip,server-ip,protocol,application-id,operation,rpc-status,processing-time,operation-specific,failures
Y ahora, para obtener la información, filtramos y agrupamos la información de los clientes Outlook utilizados. Este proceso puede tardar varios minutos dependiendo de la cantidad de días analizados y a la cantidad de usuarios/buzones de la organización.
$resultados | Where-Object {$_.'client-software' -eq 'OUTLOOK.EXE'}|group client-software-version
Una vez completado el proceso, podemos ver la cantidad de conexiones y la versión del cliente Outlook utilizado.
En este ejemplo podemos ver que se utilizan las versiones principales 14/15 y 16 con algunas variaciones por las actualizaciones. Los números de compilación por versión son los siguientes.
Versión Outlook | Numero Compilación |
14.0.XXX | Outlook 2010 |
15.0.XXX | Outlook 2013 |
16.0.XXX | Outlook 2016 |
Con este proceso podremos entonces saber si dentro de la organización tenemos clientes utilizando versiones de Outlook desactualizadas o versiones que no serán soportadas posterior al proceso de migración.
Saludos.
Samuel 🙂