none
Script um Ordner eines Exchange Postfachs in ein anderes zu kopieren RRS feed

  • Frage

  • Hallo,

    ich habe in

    http://social.technet.microsoft.com/Forums/de-DE/exchange_serverde/thread/be3d28e6-0662-43e0-a9d6-2e46f532a8fb/#be3d28e6-0662-43e0-a9d6-2e46f532a8fb

    eine Lösung gesucht um einenen Ordner eines Postfaches zu verschieben. Da es wohl keine direkte Lösung gibt hab ich ein kleines Script gemacht:

    $id = get-date -format "yyMMddhhmmss"
    $bname = $id
    $pstfile = "\\exserver\transfer_pc_zu_pc\$bname.pst"
    cls
    write-host "Kopieren eines Postfachordners von User A nach B"
    write-host "----------------------------------------"
    $quelle = read-host -prompt "Postfach Quelle?"
    $top  = read-host -prompt "Ordnername auf oberster Ebene (z. B. Posteingang)?"
    $sub  = read-host -prompt "Name des Unterordners (z. B. Kunden Schweiz)?"
    write-host "----------------------------------------"
    $ziel   = read-host -prompt "Postfach Ziel?"
    $ztop  = "von_"+$quelle
    write-host "----------------------------------------"
    write-host "Ordner" $sub "wird im Ordner" $ztop "der Mailbox" $ziel "importiert."
    write-host "----------------------------------------"
    write-host "Starte MailboxExportRequest mit Batchname:", $bname
    New-MailboxExportRequest -Batchname $bname -Mailbox $quelle -sourcerootfolder $top -includefolder $sub -excludedumpster -FilePath $pstfile
    while ((Get-MailboxExportRequest -BatchName $bname | Where {$_.Status -eq "Queued" -or $_.Status -eq "InProgress"}))
    {
    sleep 10
    write-host "." -NoNewline
    }
    if (Get-Mailboxexportrequest -batchname $bname | where {$_.status -eq "Completed"}) {
    	write-host "Export completed"
    	write-host "----------------------------------------"
    	write-host "Starte MailboxImportRequest mit Batchname:", $bname
    	New-MailboxImportRequest -batchname $bname -Mailbox $ziel -TargetRootFolder $ztop -IncludeFolder $sub -FilePath $pstfile
    	while ((Get-MailboxImportRequest -BatchName $bname | Where {$_.Status -eq "Queued" -or $_.Status -eq "InProgress"}))
    	{
    		sleep 10
    		write-host "." -NoNewline
    	}
    	write-host "."
    	$importstatus = Get-MailboxImportRequest -BatchName $bname | fl status
    	write-host $importstatus
    }
    else
    {
    	write-host "Export fail"
    }
    write-host "----------------------------------------"

    Soweit funktioniert es schon, allerdings klappt

    $importstatus = Get-MailboxImportRequest -BatchName $bname | fl status

    aus mir unbekannten Gründen nicht. Ich kann nicht das Ergebniss des imports prüfen.

    Hat hier jemand eine Idee warum?

    Grüße

    Rigoletto


    Dienstag, 2. Oktober 2012 10:28

Antworten

  • Gut, dann sollte das gehen:

    $status = get-MailboxImportRequest | select -ExpandProperty Status

    Danach solltest du noch aufräumen:

    Get-MailboxImportRequest -Status Completed  | Remove-MailboxImportRequest 

    Dann würde ich noch eine Aktion festlegen für den Fall, das der Status nicht "completed" ist.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".


    Dienstag, 2. Oktober 2012 12:03
    Moderator

Alle Antworten

  • Ich kanns nicht testen, denke aber das es am Parameter liegt. Ersetze mal zum test:

    $importstatus = Get-MailboxImportRequest -BatchName $bname | fl status

    durch:

    Get-MailboxImportRequest | write-output

    Grüße, Denniver




    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Dienstag, 2. Oktober 2012 11:21
    Moderator
  • Hi,

    dann bekomm ich ganz normal eine Ausgabe:

    [PS] Microsoft.PowerShell.Core\FileSystem::\\EXSERVER\users$\administrator\Desktop>Get-MailboxImportRequest | write-output
    
    Name                                                               Mailbox                                                            Status
    ----                                                               -------                                                            ------
    MailboxImport                                                      ex2010.ogos.de/Users/Eikenberg, Rigoletto                          Completed

    Wie mache ich es aber den Status in eine Variable zu kriegen?

    Grüße

    Rigoletto

    Dienstag, 2. Oktober 2012 11:53
  • Gut, dann sollte das gehen:

    $status = get-MailboxImportRequest | select -ExpandProperty Status

    Danach solltest du noch aufräumen:

    Get-MailboxImportRequest -Status Completed  | Remove-MailboxImportRequest 

    Dann würde ich noch eine Aktion festlegen für den Fall, das der Status nicht "completed" ist.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".


    Dienstag, 2. Oktober 2012 12:03
    Moderator
  • Danke, klappt.

    $id = get-date -format "yyMMddhhmmss"
    $bname = $id
    $pstfile = "\\exserver\transfer_pc_zu_pc\$bname.pst"
    
    cls
    write-host "Kopieren eines Postfachordners von User A nach B"
    write-host "----------------------------------------"
    $quelle = read-host -prompt "Postfach Quelle?"
    $top  = read-host -prompt "Ordnername auf oberster Ebene (z. B. Posteingang)?"
    $sub  = read-host -prompt "Name des Unterordners (z. B. Kunden Schweiz)?"
    write-host "----------------------------------------"
    $ziel   = read-host -prompt "Postfach Ziel?"
    $ztop  = "von_"+$quelle
    write-host "----------------------------------------"
    write-host "Ordner" $sub "wird im Ordner" $ztop "der Mailbox" $ziel "importiert."
    write-host "----------------------------------------"
    write-host "Starte MailboxExportRequest mit Batchname:", $bname
    New-MailboxExportRequest -Batchname $bname -Mailbox $quelle -sourcerootfolder $top -includefolder $sub -excludedumpster -FilePath $pstfile
    while ((Get-MailboxExportRequest -BatchName $bname | Where {$_.Status -eq "Queued" -or $_.Status -eq "InProgress"}))
    {
    sleep 10
    write-host "." -NoNewline
    }
    if (Get-Mailboxexportrequest -batchname $bname | where {$_.status -eq "Completed"}) {
    	write-host "Export completed"
    	write-host "----------------------------------------"
    	write-host "Starte MailboxImportRequest mit Batchname:", $bname
    	New-MailboxImportRequest -batchname $bname -Mailbox $ziel -TargetRootFolder $ztop -IncludeFolder $sub -FilePath $pstfile
    	while ((Get-MailboxImportRequest -BatchName $bname | Where {$_.Status -eq "Queued" -or $_.Status -eq "InProgress"}))
    	{
    		sleep 10
    		write-host "." -NoNewline
    	}
    	$status = get-MailboxImportRequest -batchname $bname | select -ExpandProperty Status
    	switch ($status)
    	{
    		"Completed" {
    				write-host "Import completed"
    				remove-item $pstfile
    				
    				}
    		default	{
    				write-host "Import was not completed"
    				}
    	}
    }
    else
    {
    	write-host "Export fail"
    }
    write-host "----------------------------------------"
    get-MailboxExportRequest -batchname $bname | remove-mailboxexportrequest
    get-MailboxImportRequest -batchname $bname | remove-mailboximportrequest
    
    

    Dienstag, 2. Oktober 2012 14:03