You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Outlook COM API将任务DueDate设置为None?

如何将Outlook任务的DueDate重置为None(PowerShell)

直接给Outlook任务项的DueDate属性赋值$null或[Nullable[DateTime]]$null无法真正清除日期,这是因为.NET与COM互操作会将null转换为OLE自动化的默认日期值(1899年12月30日)。要彻底将日期重置为“None”,需要通过PropertyAccessor对象操作对应的MAPI属性:

正确代码示例

Add-type -assembly "Microsoft.Office.Interop.Outlook" | Out-Null
$outlook = New-Object -ComObject Outlook.Application
$item = $outlook.Session.GetItemFromID("myvalidentryid")

# 定义DueDate对应的MAPI属性标签
$dueDatePropTag = "http://schemas.microsoft.com/mapi/proptag/0x000D0040"

# 清除该属性
$item.PropertyAccessor.DeleteProperty($dueDatePropTag)

# 保存修改
$item.Save()

原理说明

Outlook的任务项日期属性底层对应MAPI属性,直接赋值$null无法触发COM对象的“清除”逻辑,反而会被转换为默认日期。通过PropertyAccessor.DeleteProperty()可以直接删除该MAPI属性,从而让Outlook显示“None”。

其他日期属性的处理

如果需要重置其他日期属性(比如StartDate),只需替换对应的MAPI属性标签:

  • StartDate对应的属性标签:http://schemas.microsoft.com/mapi/proptag/0x000E0040
  • 用同样的DeleteProperty方法即可完成清除

内容的提问来源于stack exchange,提问作者Michael Aigner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:32:48