首页 > 解决方案 > 有没有办法在 Powershell 中获取重复事件的 Outlook 日历开始时间?

问题描述

在 Powershell 中,我试图从我的 Outlook 中获取日历条目的开始时间 - 除了定期约会之外,这工作正常,填充的日期似乎是从最初创建定期事件时开始的。有没有办法获取日历日期条目,而不是第一次输入重复事件的时间?我可能使用了不正确的属性;

$outlook = New-Object -ComObject outlook.application

$namespace = $outlook.GetNameSpace('MAPI')
$Calendar = [Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderCalendar
$folder = $namespace.getDefaultFolder($Calendar).items
#$folder.IncludeRecurrences = $True

$StartWeek = '02/12/2019'
$StartWeekDT = [datetime]::ParseExact($StartWeek,'dd/MM/yyyy', [cultureinfo]::InvariantCulture)
$EndWeekDT = $StartWeekDT.AddDays(5)
$Start = $StartWeekDT.ToString('dd/MM/yyyy') + " 00:00"
$End = $EndWeekDT.ToString('dd/MM/yyyy') + " 00:00"

$Filter = "[Start]>= '$Start' AND [End] <= '$End'"
$data = $Folder.Restrict($filter) | Select-Object 

所以在这里你可以看到过滤器说 start 属性必须大于 02/12 - 这确实选择了重复事件条目。但是,当我尝试查看 start 属性时,它会显示一月的日期(创建时间)。我在任何属性中都看不到正确的日期,我尝试将 IsRecurring 设置为 false(以查看它是否会以正确的开始重新创建条目)并按照一些在线文章的建议使用 .IncludeRecurrences,但没有运气。以前有人遇到过这个问题吗?

05/12/2019 10:30:00
05/12/2019 10:00:00
05/12/2019 15:00:00
02/12/2019 16:30:00
03/12/2019 11:00:00
04/12/2019 16:00:00
05/12/2019 15:30:00
05/12/2019 16:30:00
14/01/2019 08:30:00
11/01/2019 16:30:00
16/01/2019 12:00:00

标签: powershelloutlook

解决方案


无法弄清楚如何获取“仅此事件”开始属性,所以我只是通过添加 7 天(从重复开始日期开始)直到它在我的搜索范围内,以不同的方式找到开始值,然后将其分配给$entry.start 变量 - 用于进一步处理。请注意,这不会修改日历条目,而只是将 $entry.start 更新为属性已被拉出后一周内的值。然后我可以查询它是否是在星期一、星期二等。

Foreach($Entry in $data){    

IF ($Entry.Start -lt $EndWeekDT){
        for($i = $Entry.Start; $i -le $EndWeekDT; $i = $i.AddDays(7))
        {
        $Entry.Start = $i
        }
        }

etc..
}

推荐阅读