PowerShell umožňuje přístup k položkám událostí a schůzek v kalendářích uživatelů Exchange. V tomto příspěvku se podíváme na to, jak získat seznam událostí kalendáře nebo odebrat konkrétní událost/schůzku z kalendářů všech uživatelů v organizaci Exchange Server nebo Microsoft 365.
Obsah:
- Jak vypsat a číst události uživatelského kalendáře na Exchange Online (Microsoft 365)
- Odebrání události z kalendáře Exchange pomocí prostředí PowerShell
Jak vypsat a číst události uživatelského kalendáře na Exchange Online (Microsoft 365)
Nejprve se podívejme, jak získat seznam událostí kalendáře v poštovní schránce uživatele Exchange Online (Microsoft 365). Microsoft Graph API může načíst informace o položkách v kalendáři uživatele. Začněte registrací nové aplikace v Azure (ID Microsoft Entra->Registrace aplikace -> Nová registrace) a udělíte mu následující oprávnění aplikace Microsoft Graph:Calendars.ReadaCalendars.ReadBasic.All.

Další podrobnosti o registraci aplikací v Azure a udělování oprávnění Microsoft Graph najdete v příspěvku Jak se připojit k Microsoft Graph pomocí PowerShellu.
Nyní můžete použítMicrosoft.Graphmodul pro připojení k tenantovi Microsoft 365. V tomto příkladu použijeme ověřování Azure založené na certifikátech v PowerShellu.
$certThumbprint = "9CF05589A4B29BECEE6456F08A76EBC3DC2BC581"
$AzureAppID = "111111-2222-3333-4444-12345678"
$tenant="woshub.onmicrosoft.com"
Connect-MgGraph -AppId $AzureAppID -CertificateThumbprint $certThumbprint -TenantId $tenant
Pokud modul Microsoft.Graph chybí, nainstalujte jej:
Install-Module Microsoft.Graph -Scope AllUsers
Chcete-li zobrazit události v kalendáři konkrétního uživatele pro aktuální měsíc:
$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


Příkaz vrátil předměty události, jejich obsah (náhled těla) a jejich počáteční/koncové časy.
Odebrání události z kalendáře Exchange pomocí prostředí PowerShell
PoužijteRemove-CalendarEventscmdlet pro zrušení (smazání) události (schůzky, schůzky) v kalendářích Exchange. Funguje pro organizace Exchange Online i Exchange Server 2019.
Otevřete konzolu PowerShell a připojte se ke svému tenantovi Exchange Online (pomocí modulu Exchange Online PowerShell) nebo k hostiteli Exchange Server.
Odebrání všech nadcházejících událostí (během následujících 15 dnů) z kalendáře uživatele, jehož je organizátorem:
Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryWindowInDays 15
Nebo můžete smazat všechny události začínající od určitého data:
Remove-CalendarEvents -Identity [email protected] -CancelOrganizedMeetings -QueryStartDate 04-10-2023 -QueryWindowInDays 60
Můžete použít-PreviewOnly -Verbosemožnosti pro zobrazení seznamu takových událostí bez jejich odstranění.
Hlavní nevýhodou rutiny Remove-CalendarEvents je to, že může odstranit pouze nadcházející události kalendáře a neumožňuje vybrat události podle předmětu, organizátora, obsahu nebo jakékoli jiné vlastnosti. Nejběžnějším použitím Remove-CalendarEvents je rychlé vymazání kalendáře uživatele od událostí, které vytvořil zaměstnanec, který byl propuštěn, je nemocný nebo odjel na dovolenou.
Pokud potřebujete odstranit minulé události nebo pokud používáte místní Exchange Server 2016/2013/2010, můžete použítVyhledávací schránkaneboNew-ComplianceSearchrutiny pro vyhledávání a odstraňování položek v poštovních schránkách Exchange.
Na Exchange Serveru můžete například najít události kalendáře s konkrétním předmětem, jako je tento:
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
Tento příkaz vyhledá událost v poštovní schránce uživatele a uloží výsledky do složky SearchMailboxResultreport_mbxpoštovní schránka.
V případě, že chcete smazat nalezenou událost, nahraďte poslední parametry výrazem-Odstranit obsah. Zde je návod, jak odstranit všechny události v kalendáři uživatele:
SearchMailbox -identity [email protected] -SearchQuery kind:meetings -DeleteContent
V Exchange Online je rutina SearchMailbox zastaralá a musíte použítComplianceSearchmísto toho rutiny. Chcete-li například najít všechny události s určitým předmětem ve všech poštovních schránkách, spusťte příkazy:
New-ComplianceSearch -Name DeleteITMeeting -ContentMatchQuery "kind:meetings AND subject:weekly_it_meeting" -ExchangeLocation all
Start-ComplianceSearch -identity DeleteITMeeting
Get-ComplianceSearc -identity DeleteITMeeting | fl
Jakmile je úkol dokončen (Status=Completed), můžete odstranit události, které našel:
New-ComplianceSearchAction -SearchName DeleteITMeeting -Purge
Přečtěte si více:Vytvořte kalendář s rozevíracím seznamem v aplikaci Excel 2007, 2010, 2013












