以编程方式从outlook .pst文件中删除密码保护

时间:2010-11-26 09:55:19

标签: scripting powershell outlook pst

我正在开发一个涉及阅读大量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#或任何东西,只要它完成工作:)

1 个答案:

答案 0 :(得分:0)

可以使用扩展mapi来完成,只能使用c(++)或delphi。替代(并且更容易)是Redemption,它将扩展的mapi包装在com对象中。更具体地说,请参阅RDOStores

的AddPstStoreWithPassword方法