homedimon

Exchange Export mailbox to PST

Oct 8th, 2014
284
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #TODO:
  2. # [ ] Check PSSnapin Get-PSSnapin -Name Microsoft.Exchange.Management.PowerShell.E2010
  3. # [ ] Check exist user
  4. # [x] Check and delete old Queued
  5. # [ ] Check path from server (check it out from the server can not be)
  6. # [ ] Check <Exchange Trusted Subsystem> group has read/write path permission (check it out from the server can not be)
  7. # [ ]
  8. # [ ] Sending email (status, size, user, databases)
  9. # [ ] if .pst exist ?
  10.  
  11.  
  12.  
  13. $SecondsToSleep='5'
  14. $ExportGroupName='ExportDisableUser2PST'
  15.  
  16. $ADUser = 'user'
  17.  
  18. #Path and file to export
  19. $Path2Export="\\server\BackupP$\"
  20. $MailboxFileExport=$Path2Export+"$ADUser.pst"
  21. $MailboxArchiveFileExport=$Path2Export+"$ADUser.Archive.pst"
  22.  
  23. #region Check exist user
  24.  
  25. #endregion
  26.  
  27. #region Check and delete old Queued
  28. Get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving" | where {$_.status -eq "Completed"} | Remove-MailboxExportRequest -Confirm:$false
  29. Get-MailboxExportRequest -Name "$ExportGroupName-$ADUser" | where {$_.status -eq "Completed"} | Remove-MailboxExportRequest -Confirm:$false
  30.  
  31. if (Get-MailboxExportRequest -Name "$ExportGroupName-$ADUser") {Write-Host " Exist queued export mailbox not complite  " $ExportGroupName-$ADUser  -foregroundcolor red; exit}
  32. if (Get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving") {Write-Host " Exist queued export arhiving not complite  " $ExportGroupName-$ADUser-archiving  -foregroundcolor red; exit}
  33. #endregion
  34.  
  35. #region Check path
  36. #endregion
  37.  
  38. #region Check path permision
  39. #endregion
  40.  
  41. #region Export Mailbox
  42. $curError = $null
  43.   write-host 'Starting export mailbox. Mailbox size = ' (get-mailboxstatistics -Identity $ADUser |select  -ExpandProperty  TotalItemSize)  -foregroundcolor Yellow
  44.   New-MailboxExportRequest -Name "$ExportGroupName-$ADUser"  -mailbox $ADUser -FilePath $MailboxFileExport –Verbose
  45.   if (get-MailboxExportRequest -Name "$ExportGroupName-$ADUser") {
  46.     write-host 'Mailbox Queued create - ok' -ForegroundColor Green
  47.   } else {
  48.     write-host 'Mailbox Queued create for user' $ADUser ' - ERROR' -ForegroundColor red
  49.     exit
  50.    }
  51.   Start-Sleep -s $SecondsToSleep
  52. #endregion
  53.  
  54. #region Export Archive Mailbox
  55.   $isarciving=Get-Mailbox -Identity $ADUser|select archivedatabase|% {if ($_.archivedatabase -eq $null) {$false} else {$true}}
  56.   if ($isarciving) {
  57.         write-host 'Starting export archiving mailbox. Archiving mailbox size = ' (get-mailboxstatistics -Identity $ADUser  –archive |select  -ExpandProperty  TotalItemSize) -foregroundcolor Yellow
  58.         New-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving"  -mailbox $ADUser -Isarchive -FilePath $MailboxArchiveFileExport –Verbose
  59.         if (get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving") {
  60.             write-host 'Mailbox Arhiving Queued create - ok' -ForegroundColor Green
  61.         } else {
  62.             write-host 'Mailbox Archiving Queued create for user' $ADUser ' - ERROR' -ForegroundColor red
  63.             #exit
  64.         }
  65.         #Start-Sleep -s $SecondsToSleep
  66.      }
  67. #endregion
  68.  
  69. #region Waiting status and show progress
  70. do {
  71.                 #region Mailbox progressbar
  72.                 $StatusExport = get-MailboxExportRequest -Name "$ExportGroupName-$ADUser"| select  -ExpandProperty Status
  73.                 $MailboxPercent=get-MailboxExportRequest -Name "$ExportGroupName-$ADUser"| Get-MailboxExportRequestStatistics|select -ExpandProperty PercentComplete
  74.                 Write-Progress -id 1 -Activity "Export $ADUser Mailbox" -status "Status $StatusExport complite  $MailboxPercent percent" -percentComplete $MailboxPercent
  75.                 #endregion
  76.                 #region Archiving mailbox progressbar
  77.                 if ($isarciving) {
  78.                     $StatusExportArchiving = get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving"| select  -ExpandProperty Status
  79.                     $archivingPercent=get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving"| Get-MailboxExportRequestStatistics|select -ExpandProperty PercentComplete
  80.                     Write-Progress -Id 2 -ParentId 1 -Activity "Export $ADUser Archiving mailbox" -status "Status $StatusExportArchiving complite $archivingPercent percent" -percentComplete $archivingPercent
  81.                 } else {$StatusExportArchiving = 'Completed' }
  82.                 #endregion
  83.                 if ($StatusExport -eq 'Failed') {$StatusExport = 'Completed'}
  84.                 if ($StatusExportArchiving -eq 'Failed' ) {$StatusExportArchiving = 'Completed'}
  85.                 if (($StatusExportArchiving -eq 'Completed') -and  ($StatusExport -eq 'Completed')) {$ExitWhile=$true} else {$ExitWhile=$false}
  86.    } while ($ExitWhile -ne $true)
  87. #endregion
  88.  
  89. #region Check status
  90. write-host 'Clear Queued' -foregroundcolor Yellow
  91. $ExportMailboxComplitedStatus=get-MailboxExportRequest -Name "$ExportGroupName-$ADUser"| select  -ExpandProperty Status
  92.     if ($ExportMailboxComplitedStatus -ne 'Completed' ) {
  93.         Write-Host " Error export $ADUser mailbox status - " $ExportArchivingComplitedStatus $ExportGroupName-$ADUser  -foregroundcolor red
  94.     } else {
  95.         Get-MailboxExportRequest -Name "$ExportGroupName-$ADUser" | where {$_.status -eq "Completed"} | Remove-MailboxExportRequest -Confirm:$false
  96.     }
  97.  
  98. if ($isarciving) {
  99.     $ExportArchivingComplitedStatus=get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving"| select  -ExpandProperty Status
  100.     if ($ExportArchivingComplitedStatus -ne 'Completed' ) {
  101.         Write-Host " Error export $ADUser mailarchive status - " $ExportArchivingComplitedStatus $ExportGroupName-$ADUser-archiving  -foregroundcolor red
  102.     } else {
  103.         Get-MailboxExportRequest -Name "$ExportGroupName-$ADUser-archiving" | where {$_.status -eq "Completed"} | Remove-MailboxExportRequest -Confirm:$false
  104.     }
  105. }
  106. #endregion
  107.  
  108.  
  109. #region Sending email (status, size, user, databases)
  110. #endregion
Advertisement
Add Comment
Please, Sign In to add comment