PowerShell转换Outlook OST到CSV遇错:AddStoreFromFile方法不存在
OST转PST脚本错误修复方案
错误原因
你用到的AddStoreFromFile方法并不存在于Outlook的NameSpace对象中,OST是与特定Outlook配置文件绑定的离线存储文件,无法通过这个不存在的方法直接加载。
修正后的脚本
以下脚本可以正确读取已关联到Outlook的OST文件内容并导出为CSV:
# 创建Outlook应用实例 $outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.Session # 定位指定路径的OST存储 $ostStore = $namespace.Stores | Where-Object { $_.FilePath -eq "k:\admin-aerial.ost" } if ($ostStore) { # 获取该OST存储下的收件箱(常量6对应olFolderInbox) $inbox = $ostStore.GetDefaultFolder(6) # 导出收件箱邮件指定字段到CSV $inbox.Items | Select-Object Subject, ReceivedTime, SenderEmailAddress | Export-Csv -Path "k:\admin-aerial.csv" -NoTypeInformation Write-Host "CSV导出完成" } else { Write-Host "未找到指定路径的OST文件,请确认该文件已在Outlook配置中关联" } # 清理COM对象,避免内存泄漏 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($inbox) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($ostStore) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($namespace) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook) | Out-Null [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers()
注意事项
- 运行脚本前,确保目标OST文件已关联到当前Outlook的配置文件中(可通过Outlook「文件」>「信息」>「账户设置」>「账户设置」>「数据文件」查看)
- 如果是未关联任何账户的孤立OST,上述脚本无法读取,此时建议直接使用Outlook内置的「导入/导出向导」,选择从OST导出为PST;或使用专业的OST转PST工具处理
内容的提问来源于stack exchange,提问作者ml09616
相关产品推荐
相关产品推荐

