我正在尝试列出用户的共享邮箱。我们有一个混合环境,因此有些是通过Exchange自动映射的,有些则不是(安全组权限)。我想在登录过程中添加一个Powershell脚本,以记录用户在Outlook中加载的所有邮箱。我想将此列表保存为文本文件或csv。
我可以通过$outlook.getnamespace("mapi")
获取姓名。但是有些名称已经改变,并且用户的Outlook没有显示这些更改,所以这个名字在Exchange或AD上抛出时没有任何意义,但不知何故仍然神奇地起作用。
我需要一些更具体的,samaccountname或smtp地址......类似的东西。
修改
我继续为此工作,在MFCMAPI
的帮助下,我能够确定我需要PR_USER_NAME
属性。我需要使用vanilla Powershell在客户端系统上运行(我有数千个,所以安装EMS不是一个选项)。
答案 0 :(得分:1)
使用Namespace.Stores
集合。 MFCMAPI显示您无法在PS中访问的MAPI对象。要查看实时Outlook对象模型对象,请使用OutlookSpy(它显示MAPI和OOM对象)。
更新:如果使用Redemption是一个选项,您可以使用RDOExchangeMailbox。Owner
属性:
skPstAnsi = 1
skPstUnicode = 2
skPrimaryExchangeMailbox = 3
skDelegateExchangeMailbox = 4
skPublicFolders = 5
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
for each Store in Session.Stores
'for i = 1 to Session.Stores.Count
'set Store = Session.Stores(i)
Debug.Print Store.Name
If (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) Then
Debug.Print Store.Owner.SmtpAddress
End If
Debug.Print " ------ "
next