我正在开发一个涉及阅读大量Outlook.pst文件的项目。
这些文件都受密码保护,但我有相关密码。问题是在Outlook中打开每个文件并输入密码以便读取数据是一件非常繁琐的过程。
现在我在想是否有办法创建一个自动打开每个.pst文件的脚本,输入密码并在没有密码的情况下再次保存文件。
我一直在谷歌搜索,似乎没有找到任何问题的解决方案,看起来像MAPI outlook.application接口记录很差。到目前为止,我已经看到一个PowerShell脚本使用technet
中的Excel应用程序执行此操作$comments = @'
Script name: Remove-Password.ps1
Created on: Tuesday, July 03, 2007
Author: Kent Finkle
Purpose: How can I use Windows Powershell to
Remove the Password When Opening an Excel Spreadsheet?
'@
#-----------------------------------------------------
function Release-Ref ($ref) {
([System.Runtime.InteropServices.Marshal]::ReleaseComObject(
[System.__ComObject]$ref) -gt 0)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
#-----------------------------------------------------
$xl = new-object -comobject excel.application
$xl.Visible = $True
$xl.DisplayAlerts = $False
$wb = $xl.Workbooks.Open("C:\Scripts\Test.xls",0,$False,1,"%reTG54w")
$wb.Password = ""
$a = $wb.SaveAs( "C:\Scripts\Test.xls")
$a = Release-Ref($wb)
$a = Release-Ref($xl)
可能我可以使用类似于此的
将其应用于MAPI$outlook = new-object -com outlook.application;
$ns = $outlook.GetNameSpace("MAPI");
$fSaveMe = $ns.GetDefaultFolder($olFolderInbox).Folders.Item("Save Me")
$fSaveMe.Items | foreach { [void]$_.Move($ns.Folders.Item("Legal")) }
是否有人遇到类似问题?潜在的解决方案不一定是在PowerShell中,它可以是Python,Perl,Java,C#或任何东西,只要它完成工作:)
答案 0 :(得分:0)
可以使用扩展mapi来完成,只能使用c(++)或delphi。替代(并且更容易)是Redemption,它将扩展的mapi包装在com对象中。更具体地说,请参阅RDOStores
的AddPstStoreWithPassword方法