【问题标题】:PST : How not to put a MailboxRequest in a queuePST:如何不将 MailboxRequest 放入队列
【发布时间】:2015-12-18 07:42:56
【问题描述】:

我需要导出一些 PST。问题是,当我使用我的 foreach-object 一个一个地导出每个 PST 时,它们都被放入队列中。但是其他程序应该同时使用 PST 工作。

dir | foreach-object {
$var = $_
New-MailboxExportRequest -Mailbox $var -Filepath "\\******\******tmp\pst\$var.pst"
}

我不希望我的请求被排队,我希望在开始另一个请求之前完成它们。例如,如果第一个请求提取pst1,我希望在将pst2放入队列之前将其完全提取。有没有办法做到这一点?

【问题讨论】:

    标签: powershell queue pst


    【解决方案1】:

    您无法更改队列行为,但您可以强制交换服务器每次仅处理 1 pst

    为此,您需要编辑位于以下位置的MSExchangeMailboxReplication.exe.config 文件:

    <Exchange Installation Path>\Program Files\Microsoft\Exchange Server\V14\Bin

    MaxActiveMovesPerSourceMDB - Default is 5 - Change it to 1
    MaxActiveMovesPerTargetMDB - Default is 2 - Change it to 1
    

    您可能还需要更改这些设置:

    MaxActiveMovesPerTargetServer
    MaxActiveMovesPerSourceServer
    

    当然,如果您只想暂停 foreach 循环,您可以使用 while 语句(如 Oggew 建议的那样)来确保在处理下一个导出之前完成上一个作业

    【讨论】:

      【解决方案2】:

      您可以在传递 New-MailboxExportRequest(在 foreach 循环内)后添加类似的内容。如果导出状态等于“Queued”或“inprogress”,脚本将休眠 15 秒,然后再次检查。如果值将状态更改为已完成,它将在下一个 New-MailboxExportRequest 中传递。

      while ((Get-MailboxExportRequest -Mailbox $var | Where {$_.Status -eq "Queued" -or $_.Status -eq "InProgress"}))
      {
          sleep 15
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-12
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 2022-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多