使用 powershell 从 Outlook 获取今天的约会:不需要的结果

Fab*_*ian 6 powershell outlook

我使用以下代码提取今天的约会:

$olFolderCalendar = 9
$ol = New-Object -ComObject Outlook.Application
$ns = $ol.GetNamespace('MAPI')
$Start = (Get-Date).AddDays(-1).ToShortDateString() + " 00:00"
$End = (Get-Date).AddDays(+1).ToShortDateString() + " 00:00"

$Filter = "[MessageClass]='IPM.Appointment' AND [Start] > '$Start' AND [End] < '$End'"

$Appointments = $ns.GetDefaultFolder($olFolderCalendar).Items
$Appointments.Sort("[Start]")
$Appointments.IncludeRecurrences = $false

foreach ($Appointment in $Appointments.Restrict($Filter) ) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

列出了今天的所有约会,但也列出了今天没有发生的许多重复约会(生日、每周约会……)。知道如何避免这种情况吗?

编辑:似乎所有这些不需要的约会最初都是从我的手机同步到 Outlook 的。我将在“干净”的电脑上尝试该脚本。

编辑:我在另一台没有同步元素的电脑上尝试了该脚本,结果是一样的:所有重复出现的元素都会显示,无论它们是否是今天。AND [IsRecurring] = '$False' 也没有帮助。

小智 2

尝试更改您的过滤器:

$Filter = "[MessageClass]='IPM.Appointment' AND [Start] > '$Start' AND [End] < '$End'  AND     [IsRecurring] = '$False'"
Run Code Online (Sandbox Code Playgroud)

在这里为我工作。