我正在尝试收集当前正在使用的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.
我错过了一些明显的东西吗?
答案 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