正在使用的Outlook PST文件

时间:2016-03-23 15:17:41

标签: powershell outlook

我正在尝试收集当前正在使用的Outlook PST文件的所有路径。根据我在互联网上可以找到的代码,我们应该这样做:

$Outlook = New-Object -ComObject outlook.application
$Namespace = $Outlook.GetNamespace("MAPI")
$Namespace.Stores
#or
$Namespace.Session.Stores

每次尝试此操作时,都会收到以下错误消息:

An error occurred while enumerating through a collection: Exception from HRESULT: 0xEF640111.

我错过了一些明显的东西吗?

3 个答案:

答案 0 :(得分:0)

问题似乎是当您发送VPN并且无法访问PST文件路径的某个位置时。例如,由于驱动器号不会自动映射到VPN后面。

在这种情况下,MS Outlook甚至无法打开PST,并且只需在GUI中单击PST文件时就会抛出错误。

答案 1 :(得分:0)

您可以从注册表中检索PST路径(它们存储在注册表配置文件部分中):http://www.dimastr.com/redemption/profman_examples.htm#example2

作为测试,您可以运行以下(Redemption)脚本(VB)吗?

  skPstAnsi = 1
  skPstUnicode = 2
  set Session = CreateObject("Redemption.RDOSession")
  Session.Logon
  for each Store in Session.Stores
    if (Store.StoreKind = skPstAnsi) or (Store.StoreKind = skPstUnicode) Then
      Debug.Print Store.PstPath
    End If 
  next

答案 2 :(得分:-1)

尝试

$outlook = New-Object -comObject Outlook.Application 
$outlook.Session.Stores | where { ($_.FilePath -like '*.PST') } | format-table DisplayName, FilePath -autosize