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

使用PowerShell创建日历约会咨询(已尝试EWS)

嘿,我来帮你搞定用PowerShell创建日历约会的事儿!你提到尝试过EWS但拿不准操作是否正确,那我先把EWS的标准步骤理清楚,另外也给你补充下现在针对Exchange Online更常用的模块方法,按需选择就行~

方法一:使用Exchange Web Services (EWS)

EWS适合本地Exchange或者需要兼容旧版本的场景,先确保你已经准备好了EWS Managed API:

  • 可以通过NuGet安装:Install-Package Microsoft.Exchange.WebServices
  • 或者手动下载安装包,找到对应的程序集路径

接下来是具体的PowerShell代码步骤,每一步都给你标清楚了:

# 加载EWS程序集(根据你的安装路径调整)
Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"

# 创建EWS服务实例
$exchangeService = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2016)

# 设置身份验证(这里用当前用户的Windows身份,也可以用用户名密码)
$exchangeService.UseDefaultCredentials = $true

# 设置Exchange服务器的EWS URL(如果是Exchange Online,直接用Outlook的EWS地址)
$exchangeService.Url = New-Object Uri("https://outlook.office365.com/EWS/Exchange.asmx")

# 创建日历约会对象
$appointment = New-Object Microsoft.Exchange.WebServices.Data.Appointment($exchangeService)

# 设置约会基本属性
$appointment.Subject = "团队同步会议"
$appointment.Body = "讨论Q3项目进度,准备好各自的报告"
$appointment.Start = Get-Date "2024-09-15 14:00:00"
$appointment.End = Get-Date "2024-09-15 15:30:00"
$appointment.Location = "会议室B302"

# 添加参会人(可选)
$appointment.RequiredAttendees.Add("john.doe@contoso.com")
$appointment.OptionalAttendees.Add("jane.smith@contoso.com")

# 设置提醒(提前15分钟)
$appointment.ReminderMinutesBeforeStart = 15

# 保存约会到日历(SendAndSaveCopy会发送邀请给参会人,Save只是保存到自己日历)
$appointment.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendAndSaveCopy)

Write-Host "日历约会创建成功!"

如果之前操作有问题,大概率是程序集路径不对,或者EWS URL没设置正确——Exchange Online的话直接用上面的地址就好,本地Exchange需要换成你自己服务器的EWS地址。

方法二:使用Exchange Online Management模块(推荐Exchange Online用户)

如果你的邮箱是Exchange Online(Office 365/微软365),用官方的模块会更简单,不需要折腾EWS:

  1. 先安装模块(需要管理员权限):
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber
  1. 连接到Exchange Online:
Connect-ExchangeOnline -UserPrincipalName "your-email@contoso.com"
  1. 创建日历约会:
New-CalendarItem -Subject "客户需求沟通会" `
    -Body "确认客户最新需求细节" `
    -Start "2024-09-16 10:00:00" `
    -End "2024-09-16 11:00:00" `
    -Location "线上会议(Teams链接)" `
    -RequiredAttendees "client.contact@external.com" `
    -ReminderMinutesBeforeStart 30 `
    -SendInvites SendToAllAndSaveCopy

这个方法更直观,官方维护的模块也更稳定,权限方面只要你有邮箱的日历编辑权限就行。

一些注意事项
  • 时区:如果需要指定时区,EWS里可以用$appointment.StartTimeZone = [Microsoft.Exchange.WebServices.Data.TimeZoneInfo]::FindSystemTimeZoneById("China Standard Time"),模块方法里加-TimeZone "China Standard Time"参数
  • 权限:不管用哪种方法,都需要当前账号有创建日历项的权限,添加参会人的话还要有发送邮件的权限
  • 本地Exchange:如果是本地Exchange,EWS的版本要和服务器版本对应,避免兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 22:07:50