2017-10-11 9 views
0

Je suis dans une situation où je voudrais mettre en file d'attente quelques boîtes aux lettres à exporter (je ne veux pas qu'elles soient traitées en même temps) dans des fichiers PST. Je sais, comment les exporter avec une commande get-mailboxexportrequest, mais quand je le fais, ils commencent presque instantanément. Puis-je en quelque sorte mettre en file d'attente une autre boîte aux lettres, de sorte qu'elle démarre automatiquement lorsque la précédente est terminée?Puis-je mettre en file d'attente l'exportation de boîtes aux lettres vers PST sur Exchange Server 2010 SP3?

+1

Si vous avez une liste des boîtes aux lettres ou les ID de boîte aux lettres dans un tableau, vous devriez être capable de canaliser cela à un ForEach-Object qui exécute New-MailboxExportRequest pour chaque boîte aux lettres, en supposant que la commande s'exécute de manière synchrone. Vous devriez l'écrire pour pouvoir déterminer un nom de fichier unique pour chaque boîte aux lettres, mais cela ne devrait pas être difficile. –

+0

en êtes-vous sûr? la commande pour demander la migration se termine assez rapidement - vous n'avez pas à attendre jusqu'à ce que le processus est terminé, je pense que dans ce cas "pour chaque" commencerait toutes les autres demandes, ou ai-je tort ici? – kjubus

+0

Non, je ne suis pas sûr du tout, c'est pourquoi j'ai dit, "en supposant que [New-MailboxExportRequest] s'exécute de manière synchrone." Parcourir le document pour cette cmdlet, il semble impliquer que le système utilise une file d'attente de demandes, cependant. Alternativement, vous pouvez spécifier le paramètre '-Suspend' pour démarrer toutes les requêtes suspendues. Vous pouvez ensuite gérer la file d'attente vous-même. –

Répondre

0

je faire ce qui suit:

  • Construire un script Powershell qui vérifie s'il y a une exportation en cours d'exécution qui se passe (via Get-MailboxExportRequest) si ce ne serait le cas commencent à exporter x mailfiles vous spécifiez dans un fichier CSV
  • Utilisez le gestionnaire des tâches Windows sur votre serveur Exchange pour déclencher le script et définir un calendrier ici à quelle fréquence et quand votre script doit exécuter
  • une fois le script Powershell est exécuté, il doit retirer le mailfile exporté du CSV fichier, puis quittez
  • La prochaine exécution du script Powershell via le gestionnaire des tâches vérifiera alors si le travail en cours est toujours en cours, si elle est, il devrait quitter jusqu'à ce que son temps pour ramasser l'entrée suivante de votre liste

Mise à jour :

en tant que point de départ quelque chose comme ce qui suit devrait être bien (non testé, mais devrait vous donner un point de départ):

# Get current Export Requests 
$ExportStats = Get-MailboxExportRequest 

#Check if there are completed questes 
If ($ExportStats.Status -eq "Completed") 
{ 
    Write-Host "Export done" 
    Get-MailboxExportRequest -Status Completed -Name "$ObjectName-Export" | Remove-MailboxExportRequest -Confirm:$false 
    #Disable-Mailbox -identity "AD\$ObjectName" 

    # Create a new CSV file, which isn´t including the current export name we just marked as finish via above's section.  
    # CODE MISSING HERE!  

    # Now import our CSV list and proceed it 
    Import-CSV <Filepath of CSV file(\\server\folder\file.csv)> | ForEach-Object { 
    # Perform the export 
    New-MailboxExportRequest -Mailbox $_.MailboxAlias -FilePath $_.PSTpath 
    New-MailboxExportRequest -Mailbox $_.MailboxAlias -FilePath $_.ArchivePath 
    # Once done exit here, this will ensure we proceed only the first entry 
    Exit 
    } 

} 
elseif ($ExportStats.Status -eq "InProgress") 
{ 
    Write-Host "Export still ongoing"  
}