Elenca e rimuovi gli eventi del calendario dalla casella di posta di Exchange con PowerShell

PowerShell ti consente di accedere a eventi e riunioni nei calendari degli utenti di Exchange. In questo post esamineremo come ottenere un elenco di eventi del calendario o rimuovere un evento/appuntamento specifico dai calendari di tutti gli utenti di un'organizzazione Exchange Server o Microsoft 365.

Contenuto:

Come elencare e leggere gli eventi del calendario utente in Exchange Online (Microsoft 365)

Innanzitutto, vediamo come ottenere un elenco di eventi del calendario nella cassetta postale di un utente di Exchange Online (Microsoft 365). L'API Microsoft Graph può recuperare informazioni sugli elementi nel calendario dell'utente. Inizia registrando una nuova applicazione in Azure (ID Microsoft Entra->Registrazione dell'app -> Nuova registrazione) e concedendogli le seguenti autorizzazioni Microsoft Graph:Calendars.ReadECalendars.ReadBasic.All.

Per maggiori dettagli sulla registrazione delle applicazioni in Azure e sulla concessione delle autorizzazioni per Microsoft Graph, consultare il post Come connettersi a Microsoft Graph con PowerShell.

Ora puoi usare ilMicrosoft.Graphmodulo per connettersi al tenant di Microsoft 365. In questo esempio utilizzeremo l'autenticazione di Azure basata su certificati in PowerShell.

$certThumbprint = "9CF05589A4B29BECEE6456F08A76EBC3DC2BC581"
$AzureAppID = "111111-2222-3333-4444-12345678"
$tenant="woshub.onmicrosoft.com"
Connect-MgGraph -AppId $AzureAppID -CertificateThumbprint $certThumbprint -TenantId $tenant

Se manca il modulo Microsoft.Graph, installalo:

Install-Module Microsoft.Graph -Scope AllUsers

Per visualizzare gli eventi nel calendario di un particolare utente per il mese corrente:

$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

Il comando ha restituito gli oggetti dell'evento, il relativo contenuto (anteprima del corpo) e l'ora di inizio/fine.

Rimozione di eventi dal calendario di Exchange utilizzando PowerShell

Usa ilRimuovi-CalendarEventscmdlet per annullare (eliminare) un evento (appuntamento, riunione) nei calendari di Exchange. Funziona sia per le organizzazioni Exchange Online che per quelle Exchange Server 2019.

Apri la console di PowerShell e connettiti al tenant di Exchange Online (utilizzando il modulo PowerShell di Exchange Online) o all'host di Exchange Server.

Rimozione di tutti gli eventi imminenti (entro i prossimi 15 giorni) dal calendario di un utente di cui è l'organizzatore:

Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryWindowInDays 15

Oppure puoi eliminare tutti gli eventi a partire da una data specifica:

Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryStartDate 04-10-2023 -QueryWindowInDays 60

Puoi usare il-PreviewOnly -Verboseopzioni per visualizzare un elenco di tali eventi senza eliminarli.

Lo svantaggio principale del cmdlet Remove-CalendarEvents è che può solo rimuovere i prossimi eventi del calendario e non consente di selezionare eventi per oggetto, organizzatore, contenuto o qualsiasi altra proprietà. L'uso più comune di Remove-CalendarEvents è quello di cancellare rapidamente il calendario di un utente dagli eventi creati da un dipendente che è stato licenziato, è assente per malattia o è andato in vacanza.

Se è necessario eliminare eventi passati o se si utilizza Exchange Server 2016/2013/2010 locale, è possibile utilizzareCasella di posta di ricercaORicerca nuova conformitàcmdlet per cercare ed eliminare elementi nelle cassette postali di Exchange.

Su Exchange Server, ad esempio, puoi trovare eventi del calendario con un oggetto specifico come questo:

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

Questo comando cerca un evento nella casella di posta dell'utente e salva i risultati nella cartella SearchMailboxResult dell'utentereport_mbxcassetta postale.

Nel caso si voglia eliminare l'evento trovato sostituire gli ultimi parametri con-Elimina contenuto. Ecco come eliminare tutti gli eventi nel calendario dell'utente:

SearchMailbox -identity [email protected] -SearchQuery kind:meetings -DeleteContent

In Exchange Online, il cmdlet SearchMailbox è deprecato ed è necessario utilizzare il fileRicerca conformitàcmdlet invece. Ad esempio, per trovare tutti gli eventi con un oggetto specifico in tutte le caselle di posta, esegui i comandi:

New-ComplianceSearch -Name DeleteITMeeting -ContentMatchQuery "kind:meetings AND subject:weekly_it_meeting" -ExchangeLocation all
Start-ComplianceSearch -identity DeleteITMeeting
Get-ComplianceSearc -identity DeleteITMeeting | fl

Una volta completata l'attività (Status=Completed), puoi eliminare gli eventi trovati:

New-ComplianceSearchAction -SearchName DeleteITMeeting -Purge

Per saperne di più:Crea un calendario con elenco a discesa in Excel 2007,2010,2013

Related Posts