Воссоздание файлов PST

Я загружаю PST в хранилище Enterprise, и некоторые из них не работают. В некоторых случаях мне приходится воссоздавать файл PST, открывая его в Outlook и экспортируя содержимое в новый файл PST.

Возможно ли это сделать с помощью powershell? Я создаю новый PST из существующего PST, а не из Exchnage, поэтому, насколько мне известно, new-mailboxexportrequest не будет работать.

ТИА

Энди


person Andy White    schedule 04.08.2015    source источник
comment
если я правильно понял, у вас уже есть pst файл в профиле и вы хотите его экспортировать? зачем вообще экспортировать? Просто скопируйте его в новый файл...   -  person Avshalom    schedule 04.08.2015
comment
Исходный PST имеет некоторые повреждения, так как он не импортируется в Enterprise Vault. Если я открою его и экспортирую в новый файл PST, он будет нормально импортирован. Я ищу более быстрый способ сделать это, так как мне нужно просмотреть много файлов PST.   -  person Andy White    schedule 04.08.2015


Ответы (1)


Вы можете использовать Outlook Interop (ComObject) для программного взаимодействия с Outlook и добавления нового хранилища файлов PST.

После этого скопируйте в него все папки из вашего старого PST.

Я добавил комментарии к каждому шагу, чтобы вы могли понять, что он делает...

Конечно, ваша задача — проверить надежность этого процесса на предмет отсутствующих элементов, и вот он:

$NewPSTFilePath = "C:\PST\Backup.pst" ## add Your new PST file name path

$outlook = New-Object -ComObject outlook.application
$namespace  = $Outlook.GetNameSpace("MAPI")

$OLDStore = $namespace.Stores | Select -First 1 ## get your old PST Store (select the first 1 only)
$NameSpace.AddStore($NewPSTFilePath) ## Add the new PST to the Current profile
$NEWStore = $namespace.Stores | ? {$_.filepath -eq $NewPSTFilePath} ## Get the New Store

$OLDPSTFolders = $OLDStore.GetRootFolder().Folders ## Get the list of folders from the PST
foreach ($folder in $OLDPSTFolders)
{
"Copy $($folder.name)"
[void]$folder.CopyTo($NEWStore)
}

Примечание:

Сценарий использует ваш профиль Outlook по умолчанию, для подключения к другому профилю добавьте строку $namespace.Logon("OtherProfileName") после $namespace = $Outlook.GetNameSpace("MAPI")

person Avshalom    schedule 04.08.2015
comment
Выглядит хорошо... Могу ли я для $OLDStore указать файл/местоположение, а не искать его? Я копирую файлы PST в определенную папку, чтобы работать с ними локально, а не через общую папку на сервере. - person Andy White; 04.08.2015