从多个配置文件中检索Outlook信息帐户

时间:2018-01-10 11:27:29

标签: powershell outlook

我正在处理Outlook inventory powershel脚本(另请参阅powershell calculated properties for multiple values

此代码工作得很好,但只能使用默认的Outlook配置文件。我需要从所有Outlook配置文件中检索数据

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")
$namespace.Accounts | Select-Object DisplayName, SmtpAddress, UserName, AccountType, ExchangeConnectionMode | Sort-Object  -Property SmtpAddress | Format-Table

部分解决方案是获取Outlook个人资料列表:

 Get-childItem -Path "HKCU:Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles"

针对获得的每个配置文件运行以前的代码。这是我的求助呼救表现:) 怎么可以这样做?

1 个答案:

答案 0 :(得分:0)

您可以使用扩展MAPI(仅C ++或Delphi)检索IProfAdmin接口,循环访问所有配置文件,并列出所有服务。

如果不能选择扩展MAPI,则可以使用ProfMan库(随Redemption的可分发版本一起提供):

http://www.dimastr.com/redemption/profman_examples.htm#example1

'Enumerate and print the names of all services in all profiles
set Profiles=CreateObject("ProfMan.Profile")
for i = 1 to Profiles.Count
  set Profile = Profiles.Item(i)
  set Services = Profile.Services
  Debug.Print "------ " & Profile.Name & " ------"
  for j = 1 to Services.Count
    Debug.Print Services.Item(j).ServiceName
  next
next