我正在尝试编写一个 C# 控制台应用程序,它将为 Office 365 上的用户设置外出回复。假设我有一个alice@domain.com在 O365 上具有全局管理员权限的帐户,试图为非管理员设置 OOF 回复bob@domain.com。我可以使用 Powershell 成功获取和设置 Bob 的 OOF,使用以下命令:$UserCredential = Get-Credential #Sign in as Alice$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirectionImport-PSSession $SessionGet-MailboxAutoReplyConfiguration -Identity bob@domain.comSet-MailboxAutoReplyConfiguration -Identity bob@domain.com -AutoReplyState Enabled -InternalMessage "I'm out of office"所以我尝试在我的 C# 应用程序中使用以下代码做类似的事情:SecureString password = ...var service = new ExchangeService{ Credentials = new NetworkCredential("alice@domain.com", password), Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx")};var settings = service.GetUserOofSettings("bob@domain.com");...service.SetUserOofSettings("bob@domain.com", newSettings)但是,对于 get 和 set ,我最终都得到了Microsoft.Exchange.WebServices.Data.ServiceResponseException带有消息的'Access is denied. Check credentials and try again., The process failed to get the correct properties.'。另请注意,我可以使用此方法成功获取和设置 Alice 的 OOF,而不是 Bob 的。有谁知道为什么我有权使用 Powershell 执行此操作,但不能使用 C# 执行此操作,以及如何解决此问题?我也试过设置ImpersonatedUserId服务的字段,但后来我收到错误消息'The account does not have permission to impersonate the requested user.',我真的不想让 Alice 模拟我需要设置 OOF 的每个用户。它需要在 C# 中工作,因为我在我的应用程序中做了很多其他的东西,这些东西在 Powershell 脚本中编写起来并不容易。我唯一能想到的就是使用我的 C# 代码直接发送 Powershell 命令,如本文所述,但这似乎有点冗长且容易出错。
1 回答
- 1 回答
- 0 关注
- 252 浏览
添加回答
举报
0/150
提交
取消