设为首页 收藏本站
查看: 1301|回复: 0

[Outlook] 用powershell做outlook中的delegate.

[复制链接]

尚未签到

发表于 2015-9-13 08:31:11 | 显示全部楼层 |阅读模式
  This arctical will be published in English also - http://www.cnblogs.com/LarryAtCNBlog/p/4062593.html
  环境Exchange 2010 SP2 + Outlook 2010
  加delegate其实并不是一条命令的事,因为在server上用命令行操作和outlook本地操作完全不一样,outlook会自动做其它很多事情,如下图是outlook中默认会勾上的几个功能。
DSC0000.png
  1. Calendar的editor权限
  2. Tasks的editor权限
  3. Delegate receives copies of meeting-related messages sent to me 会打上勾
  这其实在outlook2003中就是如此,但这导致了一个问题,在exchange 2010中,虽然提供了一个Set-Mailbox -GrantSendOnBehalfTo来加delegate,但这仅仅是加一个delegate,完全没有默认设置上图中的各种选项,因此就要通过其它一些命令来做。
  1. Calendar和Tasks都可以用Add-MailboxFolderPermission来添加权限。
  2. 问题在于"Delegate receives copies of meeting-related messages sent to me",这个功能是很多Assistant都要的,但是唯独它没有一个cmdlet能直接做到修改。
  于是,下面就是怎么利用EWS(Exchange web service)来做一个完整的delegate,其实outlook也是通过它做的。
  第一步,下载EWS API - http://www.microsoft.com/en-us/download/details.aspx?id=35371
  安不安装都无所谓,我们只需要用到里面的Microsoft.Exchange.WebServices.dll,用7z其实可以解压出来跳过安装。
DSC0001.png
  然后打开powershell,由于用的是Webservice,这个powershell在哪运行就无所谓了。
  用import-module引导该dll,它的类才可以被我们使用,当然如果喜欢高大上的代码,也可以用[Reflection.Assembly]::LoadFile()方法。



Import-Module .\Microsoft.Exchange.WebServices.dll
  运行下面的代码建立一个ExchangeService的instance,如果没有后面的Exchange2010_SP2,该instance会默认以API里最新的建立。



$Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService('Exchange2010_SP2')
  再输入$Service可以看到一些属性,或者用get-member也可以得到方法,这里我就不贴出来了。
  这时候需要指定EWS的url,有两种办法,一种是直接指定EWS的URL,或者用$Service里带的一个method叫AutodiscoverUrl自动发现一下,个人是推荐AutodiscoverUrl的,因为这是直接从AD里读取Autodiscover的配置,只要outlook能正常discover,那这个功能肯定也没问题。



$Service.AutodiscoverUrl('xxxxx@yyy.com')
  或者像下面直接指定CAS服务器上的ews



$Service.Url = 'https://CASServer/ews/exchange.asmx'
  从$Service的方法中,可以看到和delegate相关的方法($Service | get-member)



AddDelegates
GetDelegates
RemoveDelegates
UpdateDelegates
  还是很明显的,用AddDelegates就可以添加delegate了,使用$Service.AddDelegates可以直接输出它接收的几个参数,输出结果可能有些乱,清理如下,



参数1是一个mailbox,也就是我们的目标mailbox
Microsoft.Exchange.WebServices.Data.Mailbox mailbox
参数2是一个meetingRequestsDeliveryScope
Microsoft.Exchange.WebServices.Data.MeetingRequestsDeliveryScope meetingRequestsDeliveryScope
参数3是一个delegateUsers的集合
Microsoft.Exchange.WebServices.Data.DelegateUser
  其中参数2就是下图outlook中的设置,
DSC0002.png
  现在方法有了,参数也知道了,参数类型也有了,那就一个个把它们生成出来就好了。
  生成参数1,



$Mailbox = New-Object Microsoft.Exchange.WebServices.Data.Mailbox('xxxxx@yyy.com')
  生成参数2,



$Scope = [Microsoft.Exchange.WebServices.Data.MeetingRequestsDeliveryScope]::DelegatesOnly
  生成参数3,



$dgUser = New-Object Microsoft.Exchange.WebServices.Data.DelegateUser('zzz@yyy.com')
$dgUser.Permissions.CalendarFolderPermissionLevel = 'editor'
$dgUser.Permissions.TasksFolderPermissionLevel = 'editor'
$dgUser.ReceiveCopiesOfMeetingMessages = $true
  好了,3个参数完成,下面是调用AddDelegates把delegates加上去。



$Service.AddDelegates($Mailbox, $Scope, $dgUser)
  运行正确是不会报错的,但是可能会失败,这个方法的返回是执行结果,如果错误的话也会包括具体的错误信息非常好排错。
  最后,也是很多文章都没有提及的,就是必须有至少是impersonation的role权限,
  http://msdn.microsoft.com/en-us/library/office/bb204095(v=exchg.140).aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-112849-1-1.html 上篇帖子: [Outlook] Use powershell to do delegates like outlook. 下篇帖子: Bash shell编程基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表