Export all mailboxes to pst of inactive users

Welcome Forums General PowerShell Q&A Export all mailboxes to pst of inactive users

Viewing 0 reply threads
  • Author
    • #6542
      Topics: 1562
      Replies: 0
      Points: 1
      Rank: Member

      by Zadnak at 2013-04-09 14:38:52

      Hi all,

      We are about to migrate to a new domain and I need to export all mailboxes to pst of inactive users. We plan to delete the users off Exchange after they have been archived. I was able to generate a report of the inactive users using this command:

      Get-Mailbox | Get-MailboxStatistics | Where {($_.LastLogonTime -lt (get-date).adddays(-60))} |export-csv z:\users_older_than_60.csv

      I was wondering what command I need to run next to mass export to pst those users. I’m working with Exchange 2010 for this.

      Thanks in advance!

      by DonJ at 2013-04-09 23:33:56

      So, you’re after the Export-Mailbox command, I suppose. Use Get-Mailbox to get the maiboxes you want, pipe them to Export-Mailbox, and use its -PSTFolderPath to specify a destination folder.

      by Zadnak at 2013-04-10 10:29:45

      So my command should be

      Get-Mailbox | Get-MailboxStatistics | Where {($_.LastLogonTime -lt (get-date).adddays(-60))} | New-MailboxExportRequest -Filepath z:\pstfiles

      Is that enough for Powershell to understand what I want? I’m AWFUL with sintax, so that’s why I’m asking.

      by Kottees at 2013-04-11 02:29:56

      Hi, Try this.
      foreach ($i in (Get-Mailbox | Get-MailboxStatistics | Where {($_.LastLogonTime -lt (get-date).adddays(-60))})) { New-MailboxExportRequest -Mailbox $i -FilePath "\\Exports\$($i.Alias).pst" }

      by Zadnak at 2013-04-13 15:45:09

      I get this when running ^that command:

      Cannot process argument transformation on parameter 'Mailbox'. Cannot convert the "Microsoft.Exchange.Data.Mapi.MailboxStatistics" value of type "Microsoft.Exchange.Data.Mapi.MailboxStatistics" to type "Microsoft.Exchange.Configuration.Tasks.MailboxOrMailUserIdParameter".
      + CategoryInfo : InvalidData: (:) [New-MailboxExportRequest], ParameterBindin...mationException
      + FullyQualifiedErrorId : ParameterArgumentTransformationError,New-MailboxExportRequest

      Thanks for the help!

      by ArtB0514 at 2013-04-15 08:45:53

      You just need to move the Where-Object clause before the Get-MailboxStatistics call so that the Mailbox gets returned and not the statistics object at the end of the pipeline.

      foreach ($i in (Get-Mailbox | Where-Object {($_ | Get-MailboxStatistics).LastLogonTime -lt (Get-Date).AddDays(-60)})) {do-export-here}

      by Zadnak at 2013-04-15 14:43:18

      Running ^that command, I get

      Pipeline not executed because a pipeline is already executing. Pipelines cannot be executed concurrently.
      + CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [],
      + FullyQualifiedErrorId : RemotePipelineExecutionFailed

      by ArtB0514 at 2013-04-15 16:28:45

      Ah, so. I keep forgetting about that. Try it this way and see if it works.
      foreach ($I in (Get-Mailbox | Where-Object {(Get-MailboxStatistics $_.Name).LastLogonTime -lt (Get-Date).AddDays(-60)})) {do-export-task-here}

      I don’t have access to Exchange right now, so can’t really check this. I’ll think about it more tonight and see how it works when I get to the office tomorrow.

      by ArtB0514 at 2013-04-16 06:28:28

      Hmmm. Still gets the running pipeline error. Oh, well, this way isn’t very efficient, but it does work:

      $Day60 = (Get-Date).AddDays(-60)
      $Mailboxes = Get-Mailbox -ResultSize Unlimited
      $Mailboxes = $Mailboxes | Where-Object {(Get-MailboxStatistics $_.Name).LastLogonTime -lt $Day60}
      foreach ($I in $Mailboxes) {do-export-task-here}

      by Adom503 at 2013-04-26 02:57:40

      Whenever I used powershell scripts for the inactive users mailboxes or disconnected mailboxes, i came in trouble. Now thing is that what I did to overcome here, just deployed a small edb pst application that did this job smoothly. You may check:



      by Zadnak at 2013-05-01 07:18:25

      Hmmm. Still gets the running pipeline error. Oh, well, this way isn’t very efficient, but it does work:

      $Day60 = (Get-Date).AddDays(-60)
      $Mailboxes = Get-Mailbox -ResultSize Unlimited
      $Mailboxes = $Mailboxes | Where-Object {(Get-MailboxStatistics $_.Name).LastLogonTime -lt $Day60}
      foreach ($I in $Mailboxes) {do-export-task-here}

      This worked perfectly! Thank you very much for your help.

Viewing 0 reply threads
  • The topic ‘Export all mailboxes to pst of inactive users’ is closed to new replies.