skarden
Goto Top

Scriptfragen zu Massenexport

Hallo,

ich möchte auf einem Exchange Server 2010 einen Massenexport in PST-Dateien durchführen. Dies soll als zusäztliche Sicherung ein mal die Woche geschehen. Es handelt sich dabei um ca 130 Konten.

Dafür habe ich mir ein Script zusammengeschustert. Leider ist das Ganze nur teilweise erfolgreich. wie man dem Script sicher entnehmen kann, habe ich vom scripten nur rudimentäre Ahnung. Und mir die einzelnen Teile zusammengeklaubt.

Die Sicherung wird am Wochenende via gepanten Task angestossen und hat somit genug Zeit durchzulaufen.

Der Task ruft die Datei Mailexport.cmd mit folgendem Inhalt auf:

PowerShell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; \\Exchange\Scripte\Mail-Export-All.ps1"

Dies soll mir eine Exchange-Powershell öffnen und dann das eigentliche Powershellscript aufrufen. Das klappt auch soweit.

Die Mail-Export-All.ps1 hat folgenden Inhalt:

foreach ($i1 in (Get-Mailbox)) {New-MailboxRepairRequest -Mailbox $i1 -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts,Folderview };
foreach ($i2 in (Get-Mailbox)) { New-MailboxExportRequest -Mailbox $i2 -FilePath "\\Exchange\psts\$($i2.Alias).pst" };
Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest;
Get-MailboxExportRequest -Status Failed | fl >> \\Exchange\temp\Failed.txt;
Dir e:\psts > \\Exchange\temp\pst.txt
c:\script\blat\Blat -install smtpserver Absendeadresse
c:\script\blat\Blat "c:\temp\pst.txt" -to Empfängeradresse -server smtpserver -u User -pw Passwort -debug -timestamp -subject "Info PST-Folder Inhalt"
c:\script\blat\Blat "c:\temp\Failed.txt" -to Empfängeradresse -server smtpserver -u User -pw Passwort -debug -timestamp -subject "Info PST-Export-Failed"

Was soll das Script genau machen:

1. Alle Mailboxen reparieren
2. Alle Mailboxen in einen Ordner PSTs exportieren
3. Die korrekt durchgelaufenen Exports wieder löschen
4. Die Fehlerhaften Exports auflisten und in eine Datei speichern
5. Den Inhalt des PSTs-Verzeichnis auflisten und in eine Datei speichern
6. Die beiden gespeicherten Dateien per Mail versenden.

Was ist wirklich passiert:

Ich bekam keine Mail, Die Dateien pst.txt und failed.txt wurden nicht aktualisiert, ein Großteil der Mailboxen wurden exportiert, die erfolgreichen Exports wurden gelöscht

Die einzelnen Zeilen für sich habe ich getestet und sie scheinen auch zu funktionieren. Nur bei Punkt 1 bekomme ich eine Fehlermeldung im Laufe der Ausführung die da lautet:

Anforderung für Onlineintegritätsüberprüfung für Datenbank Mailbox Database 1943330521 konnte nicht gesendet werden. Fehler: Die Taskwarteschlange ist voll. Versuchen Sie es später erneut.
+ CategoryInfo : InvalidOperation: (face-smile [New-MailboxRepairRequest], OnlineIsIntegException + FullyQualifiedErrorId : 338CB80E,Microsoft.Exchange.Management.Tasks.NewMailboxRepairRequest

Er schafft 70 Reparaturen, dann kommt ca 20x der Fehler dann kommen wieder 40 Reparaturen. Hier wäre die Frage, wie kann man die Warteschlange vergrößern oder wie kann ich das in 2 Schritten durchführen?

Bei dem Löschvorgang gibt es eine Abfrage die eine Eingabe erwartet. Wie kann ich diese mit übergeben? Ich denke, das an dieser Stelle das Script dann stehenbleibt und den Rest gar nicht mehr abarbeitet.

Kann mir da jemand weiterhelfen?

Danke und Gruß
Skarden

Content-ID: 181853

Url: https://administrator.de/contentid/181853

Ausgedruckt am: 25.11.2024 um 17:11 Uhr

emeriks
emeriks 13.03.2012 um 19:06:51 Uhr
Goto Top
Zeile 1 und 2 erzeugen Requests. Diese werden in Warteschlangen eingereit und im Hintergrund bearbeitet. Das Script macht mit den nächsten Zeilen weiter, auch wenn die Reguests im Hintergrund noch abgearbeitet werden.
Insofern laufen die Aktionen aus zeile 1 und 2 also parallel ab.
Die Get-Abfragen in Zeile 3 und 4 sind damit auch hinfällig, weil zu früh.

Zu Blat kann ich nichts sagen, setze das selbst nicht ein.

Ich würde die einzelnen Schritte zeitlich aufsplitten über mehrere Scripte, die in zeitlichem Abstand unabhängig von einander gestartet werden.

Bsp.
18:00 Uhr Script mit Zeile 1
20:00 Uhr Script mit Zeile 2
24:00 Uhr Script mit Zeile 3 und 4 (Startzeit je nach dem, wie lange der Export erwartungsgemäß läuft)
24:15 Uhr Script mit Rest


Weiterhin: Du musst auch die "Failed" Request löschen, weil die sonst in der Warteschlange stehen bleiben.
Skarden
Skarden 14.03.2012 um 15:00:49 Uhr
Goto Top
Hallo,

danke für die Antwort.

Ein Problem ist ja. dass Zeile 1 für sich schon ein "volllaufen" der Warteschlange bringt. Die einzelnen Teile zeitlich zu entzerren ist eine gute Idee.

Skarden