从Exchange Server邮箱导出到PST文件

问题描述 投票:2回答:3

我想(任何用户)将邮箱从一个Exchange 2010服务器导出到PST文件。什么是存档的最佳方式?

首先,我一直在寻找在COM的互操作模型。但这似乎只是为了能够导出当前登录到Outlook用户的邮箱。还是我失去了一些东西呢?我尝试这样做:

Dim app As New Outlook.Application()
Dim ns As Outlook.NameSpace = app.GetNamespace("MAPI")
ns.AddStore("C:\backup.pst")
Dim backupFolder As Outlook.MAPIFolder = ns.Session.Folders.GetLast()
Dim selectedMailBox As Outlook.MAPIFolder = ns.Folders("[email protected]") 'NOT Working
selectedMailBox.CopyTo(backupFolder)
ns.RemoveStore(backupFolder)

后来我发现这个PowerShell的功能:New-MailboxExportRequest可悲的是,我不能找到一种方法,从.NET调用它。是否有可能从.NET打电话了吗?

或者我需要使用任何其他图书馆从Exchange导出文件? (也许使用POP3接收所有邮件,并将其转换到PST?)

.net vb.net powershell outlook exchange-server
3个回答
1
投票

您可以使用Redemption为 - 运行代码谁可以访问邮箱的问题,并呼吁RDOSession.LogonExchangeMailbox域用户。然后,您可以使用RDOSession.Stores.GetSharedMailbox打开其他用户的邮箱。一旦你的RDOStore对象,你就可以访问所有开​​始RDOStore.IPMRootFolder的文件夹和邮件。

要复制到PST商店,你可以使用RDOSession.Stores.AddPstStore添加新的或现有的PST文件。

要复制所有文件夹,使用类似以下

foreach (RDOFolder sourceFolder in ExchangeStore.IPMRootFolder.Folders)
{
  sourceFolder.CopyTo(PstStore.IPMRootFolder);
}

0
投票

您可以执行PowerShell中使用System.Management.Automation和System.Management.Automation.Runspaces在C#中的命令。

一个非常有限的例子:

int GetMiliseconds()
{
    using (var ps = System.Management.Automation.PowerShell.Create())
    {
        var cmd = new System.Management.Automation.Runspaces.Command("Get-Date");
        ps.Commands.AddCommand(cmd);
        var result = ps.Invoke();
        return result != null && result.Any() ? result.First().Members["Millisecond"].Value as Int32? ?? 0 : 0;
    }
}  

最棘手的部分是,结果总是回来为ICollection<PSObject>,你必须保持你的眼睛打开抛出的异常和空值的所有时间。


0
投票

哪些Exchange服务器?在Exchange Server 2013,你必须先给权利这个角色,因为即使是管理员没有他们。打开Windows电源外壳使用管理权限执行此命令:

新ManagementRoleAssignment -Role“邮箱导入导出” - 用户“用户名”

(替换“用户名”的用户名)。

创建一个共享网络文件夹和记忆的路径,如\“服务器名称” \“SHAREDFOLDERNAME”。

与您的服务器名称和“SHAREDFOLDERNAME”与您的特定共享文件夹名称替换“服务器名称”。在Exchange Server管理程序(命令行界面),使用命令获取邮箱让你在Exchange服务器,并从那里有邮箱,你可以选择你要导出的.pst文件的邮箱。接下来,在命令行中键入:

新MailboxExportRequest -Mailbox “USERNAME” -FilePath \ “服务器名称” \ “SHAREDFOLDERNAME” \ “PSTFILENAME” 的.pst

再次记住,以取代“服务器名称”和“USERNAME”与您的服务器名和特定邮箱的用户名被以其他方式出口,将发生错误。替换“PSTFILENAME”的名称,你想保存文件。此后,你可以查看共享文件夹,你会发现文件的大小增加或使用命令:Get-MailboxExportRequest -Mailbox“SPECIFICUSERNAME” |格式表-wrap -autosize

查看该进程是否做或不该。如果它这样做,它会显示在状态栏为“完成”。如果不是,它会显示“排队”。

© www.soinside.com 2019 - 2024. All rights reserved.