PowerShell es muy útil para explorar los calendarios de Exchange, ya sea para ver qué eventos están programados o para cancelar una cita específica cuando sea necesario. A veces, administrar calendarios en Exchange o Microsoft 365 resulta un poco complicado, sobre todo si no se quiere manipular la interfaz gráfica de usuario o la interfaz del usuario. Usar scripts de PowerShell puede ahorrar mucho tiempo, pero también es un poco extraño, ya que hay varias maneras de abordar esto según las necesidades específicas. Por ejemplo, obtener una lista de todos los eventos del calendario del usuario es una cosa, pero eliminar una reunión en particular o borrar calendarios completos son cosas totalmente distintas: a veces se usan las mismas herramientas, a veces no. Tenga en cuenta que a veces los comandos funcionan en una configuración y fallan en otra, especialmente con permisos o módulos. En cualquier caso, esta guía debería ayudarle a comprender cómo listar y eliminar eventos del calendario en la mayoría de las configuraciones, ya sea en Exchange Online o en un servidor local.¿El resultado? Podrás ver todas las próximas reuniones o vaciar un calendario cuando quieras organizarlo todo sin tener que iniciar sesión manualmente en cada cuenta. Es un poco complicado, sí, pero es más rápido que estar haciendo clic durante horas. Consulta los comandos a continuación y descubre cuál se adapta mejor a tu caso.
Cómo enumerar y eliminar eventos del calendario en Exchange mediante PowerShell
Enumerar eventos del calendario de usuario en Microsoft 365 con PowerShell
Esto es útil principalmente cuando se desea echar un vistazo rápido a lo programado en el calendario de un usuario, ideal para auditorías o para determinar qué hay pendiente. Esto funciona porque la API de Microsoft Graph se activa, lo que permite acceder a los elementos del calendario si se tienen los permisos adecuados. Normalmente, se registra una aplicación en Azure AD ( Azure Portal > Registros de aplicaciones > Nuevo registro ) y se le otorgan Calendars. Readlos Calendars. ReadBasic. Allpermisos necesarios para que el script pueda ver los datos del calendario. Si no tiene el módulo instalado, ejecute:
Install-Module Microsoft. Graph -Scope AllUsers
Una vez resuelto esto, use el identificador de su aplicación de Azure, la huella digital de un certificado y el identificador de inquilino para autenticarse. A continuación, se muestra un ejemplo básico de conexión:
$certThumbprint = "9CF05589A4B29BECEE6456F08A76EBC3DC2BC581" $AzureAppID = "111111-2222-3333-4444-12345678" $tenant = "woshub.onmicrosoft.com" Connect-MgGraph -AppId $AzureAppID -CertificateThumbprint $certThumbprint -TenantId $tenant
En algunas configuraciones, esto podría fallar la primera vez. Si es así, intenta reconectarte o revisa tus permisos, ya que Windows suele complicar las cosas más de lo necesario. Después de conectarte, puedes extraer los eventos del calendario del usuario de esta manera:
$StartDate = (Get-Date -Day 1) $EndDate = (Get-Date -Day 1).AddMonths(1) Get-MgUserCalendarView -UserId "[email protected]" -CalendarId "Calendar" -StartDateTime $StartDate -EndDateTime $EndDate | Select-Object -Property @{Name='EventStart';Expression={ $_. Start. DateTime }}, @{Name='EventEnd';Expression={ $_. End. DateTime }}, Subject, BodyPreview
Esto mostrará las reuniones con sus horas de inicio y fin, temas y fragmentos de contenido. Es útil para realizar auditorías o simplemente ver la programación sin tener que acceder al portal.
Método 1: Eliminar próximos eventos en el calendario de Exchange
Si desea eliminar tareas pendientes (por ejemplo, si el empleado está de vacaciones y necesita limpiar su calendario), puede usar el cmdlet Remove-CalendarEvents. Esto le indica a PowerShell: «Elimine todas las reuniones programadas para los próximos 15 días que este usuario haya organizado» o especifique un rango de fechas. Aquí tiene un ejemplo:
Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryWindowInDays 15
Esto es útil para limpiezas rápidas cuando la persona se va pronto o necesitas hacer un barrido rápido. También puedes enfocarte en rangos de fechas específicos:
Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryStartDate 2023-04-10 -QueryWindowInDays 60
En algunas configuraciones, añadir -PreviewOnly -Verbosees útil para ver qué se eliminará primero y así evitar borrar todo accidentalmente. Sin embargo, tenga en cuenta que este cmdlet solo captura los próximos eventos y no filtra por tema ni organizador; es una herramienta de purga rápida, principalmente para la limpieza después de despidos o reinicios rápidos.
Si necesita eliminar eventos pasados o trabajar con información antigua en un Exchange local (por ejemplo, 2016, 2013, etc.), le recomendamos usar Search-Mailbox o New-ComplianceSearch, especialmente si trabaja con temas o contenido específico en los elementos del calendario. Por ejemplo:
Search-Mailbox -Identity [email protected] -SearchQuery "Subject:'Discuss: AD Schema Update' AND Kind:meetings AND Received:01/12/2023..15/01/2024" -TargetMailbox report_mbx -TargetFolder SearchMailboxResult -LogOnly -LogLevel Full
Esto extrae reuniones específicas que coinciden con el asunto y el rango de fechas. Para eliminarlas, intercambie -LogOnlypor -DeleteContent. La misma idea en Exchange Online, pero principalmente usando ComplianceSearch. Aquí tiene un ejemplo rápido:
New-ComplianceSearch -Name DeleteOldMeetings -ContentMatchQuery "kind:meetings AND subject:weekly_it_meeting" Start-ComplianceSearch -identity DeleteOldMeetings Get-ComplianceSearch -identity DeleteOldMeetings | fl
Una vez que se complete su búsqueda (el estado muestra Completado ), puede ejecutar:
New-ComplianceSearchAction -SearchName DeleteOldMeetings -Purge
Este enfoque requiere un poco más de investigación, pero es poderoso si necesita buscar eventos específicos o limpiar cronogramas antiguos en masa.
Resumen
Administrar eventos de calendario con PowerShell puede parecer un poco intimidante al principio, especialmente con la gran cantidad de herramientas y comandos disponibles, pero una vez que le coges el truco, es un salvavidas. Ya sea que solo estés viendo o eliminando eventos directamente, hay un método que se adapta a casi cualquier situación. Simplemente revisa bien tus comandos y el alcance antes de ejecutar eliminaciones masivas; no hay nada peor que borrar todo accidentalmente. En una configuración funcionó al instante; en otra, fue necesario reiniciar o actualizar rápidamente. Aun así, suele ahorrar mucho tiempo en comparación con los clics manuales, especialmente en una organización grande.¡Mucha suerte con tus calendarios!
Resumen
- Utilice módulos de PowerShell como Microsoft. Graph para leer datos del calendario.
- Registre las aplicaciones en Azure y otorgue los permisos correctos antes de conectarse.
- Utilice Remove-CalendarEvents para limpiar rápidamente las próximas reuniones.
- Para eventos más antiguos o específicos, busque y elimine con Search-Mailbox o ComplianceSearch.
- Siempre pruebe los comandos con -PreviewOnly antes de eliminar grandes cantidades de datos.