Я работаю над проектом, который предполагает чтение большого количества файлов Outlook.pst.
Все эти файлы защищены паролем, но у меня есть рассматриваемый пароль. Проблема в том, что это очень утомительный процесс открытия каждого файла в Outlook и ввода пароля для чтения данных.
Теперь я думаю, есть ли способ создать скрипт, который автоматически открывает для меня каждый файл .pst, вводит пароль и снова сохраняет файл без пароля.
Я гуглил и, похоже, не нашел решения своей проблемы, похоже, интерфейс MAPI outlook.application плохо документирован. До сих пор я видел сценарий PowerShell, который делает это с приложением Excel из technet
$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 # или где угодно, если оно выполняет свою работу:)