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

如何通过PowerShell脚本从Outlook获取指定名称的非默认日历?

解决Outlook非默认日历获取问题

核心问题原因

你之前的代码是从默认日历的子文件夹里找目标日历,但你要的是和默认日历同级的独立日历,得从所有日历的根容器里查找,而非默认日历的下级目录。

PowerShell 实现代码

1. 获取目标日历的完整脚本

# 初始化Outlook COM对象
$outlook = New-Object -ComObject Outlook.Application
$mapiNamespace = $outlook.GetNamespace("MAPI")

# 获取所有日历的根容器(默认日历的父文件夹)
# 9 对应 Outlook 枚举值 olFolderCalendar,代表默认日历文件夹
$allCalendarsRoot = $mapiNamespace.GetDefaultFolder(9).Parent

# 按名称获取目标日历
$targetCalendar = $allCalendarsRoot.Folders.Item("你的目标日历名称")

# 输出该日历的所有项目(按需处理)
$targetCalendar.Items

2. 遍历所有日历(用于确认名称)

如果不确定目标日历的准确名称,可以先遍历输出所有日历:

$outlook = New-Object -ComObject Outlook.Application
$mapiNamespace = $outlook.GetNamespace("MAPI")
$allCalendarsRoot = $mapiNamespace.GetDefaultFolder(9).Parent

foreach ($calendar in $allCalendarsRoot.Folders) {
    Write-Host "日历名称: $($calendar.Name)"
}

Python 调用PowerShell脚本示例

用subprocess模块执行脚本即可,注意设置执行策略避免权限问题:

import subprocess

# 执行PowerShell脚本
ps_script_path = "你的日历获取脚本路径.ps1"
result = subprocess.run(
    ["powershell.exe", "-ExecutionPolicy", "Bypass", "-File", ps_script_path],
    capture_output=True,
    text=True
)

# 打印脚本输出
print("日历数据:\n", result.stdout)
# 若有错误则打印
if result.stderr:
    print("错误信息:\n", result.stderr)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:15:42