首页 > 解决方案 > Outlook 互操作程序集中的 olFolderCalendar 未显示所有日历条目

问题描述

我正在使用Microsoft Scripting Guys 博客Get-OutlookCalendar中的函数 ( ),如下所示:

 Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
 $olFolders = "Microsoft.Office.Interop.Outlook.OlDefaultFolders" -as [type]
 $outlook = new-object -comobject outlook.application
 $namespace = $outlook.GetNameSpace("MAPI")
 $folder = $namespace.getDefaultFolder($olFolders::olFolderCalendar)
 $folder.items |
 Select-Object -Property Subject, Start, Duration, Location

它工作得很好。问题是它似乎没有返回我所有的日历条目。例如,我使用这样的 where 子句调用函数:

$datefmt = "MM/dd/yyyy"
$today = (Get-Date).ToString($datefmt)
$tomorrow = ((Get-Date).AddDays(1)).ToString($datefmt)
Get-OutlookCalendar | where-object { $_.start -gt [datetime]$today -and $_.start -lt [datetime]$tomorrow } | Select-Object -Property Subject,Start |Sort-Object Start

从 Outlook 中,我看到四个条目,但代码只返回一个条目。

UI 中显示的日历是否以某种方式聚合了多个文件夹,或者任何人都可以提出其他原因?

标签: powershelloutlook

解决方案


由于函数的示例,您将 DateTime 对象格式化为字符串,然后将其转换回 DateTime 对象以适合参数start

没有必要,你可以简单地做

$today    = (Get-Date).Date      # .Date sets the time to midnight (00:00:00)
$tomorrow = $today.AddDays(1)

Get-OutlookCalendar | 
  Where-Object { $_.Start -gt $today -and $_.Start -lt $tomorrow } | 
  Select-Object -Property Subject,Start | Sort-Object Start

现在,该函数将尝试查找(在撰写本文时)2020 年 8 月 24 日星期一 00:00:00 和 2020 年 8 月 25 日星期二 00:00:00 之间的日历项,即从今天开始的所有日历项.


推荐阅读