andre.nitschke
Goto Top

PST per Script erzeugen lassen

Hallo
ich habe eine Reihe von Benutzern die Outlook nutzen. Dieses greift auf einen lokalen Exchange Server zu. Nun kann ich in Outlook einen Export in PST durchführen so das alle eMails, Termine, Kontakte etc dort abgespeichert werden. Dieses würde ich gern automatisiert erfolgen lassen. So das die Benutzer nur noch ein Script ausführen müssen und anschliessend wird die PST Datei unter einem Benutzername auf Laufwerk u: abgelegt. z.b. U:\testuser.pst
Die Benutzer sollen das nicht manuell durchführen müssen.

Content-ID: 81347236442

Url: https://administrator.de/forum/pst-per-script-erzeugen-lassen-81347236442.html

Ausgedruckt am: 05.04.2025 um 00:04 Uhr

manuel-r
manuel-r 11.12.2023 um 08:07:00 Uhr
Goto Top
Hallo

Nun kann ich in Outlook einen Export in PST durchführen so das alle eMails, Termine, Kontakte etc dort abgespeichert werden. Dieses würde ich gern automatisiert erfolgen lassen.

Gibt es einen besonderen Grund dafür, dass das lokale Outlook das machen soll? Am Exchange direkt geht das viel besser.

Manuel
8030021182
8030021182 11.12.2023 um 08:10:22 Uhr
Goto Top
em-pie
em-pie 11.12.2023 um 08:37:25 Uhr
Goto Top
Moin,

das beantwortet deine Frage vielleicht nicht direkt, dennoch stelle ich zunächst diese Gegenfrage:
Was ist dein/ euer Beweggrund für das Vorhaben?
Ggf. gibt es ja bessere Lösungen, für den Sinn hinter dem Vorhaben face-wink
NordicMike
NordicMike 11.12.2023 um 09:26:31 Uhr
Goto Top
Der New-MailboxExportRequest lässt sich auf dem Client genau so wie auf dem Exchange Server durchführen. Da die Clients nicht immer online sind, ist der Exchange Server der bessere Rechner für den Befehl.

Wenn das ganze ein Backup darstellen soll: Das wird nichts.
andre.nitschke
andre.nitschke 12.12.2023 um 07:43:15 Uhr
Goto Top
Ich weiss nicht wie gut die Zusammenarbeit mit dem Betreibern des Exchange noch ist und möchte daher erstmal das die Benutzer möglichst leicht eine lokale Kopie erstellen können ohne sich weit durchklicken zu müssen.
DAs ist auch kein regelmässiges Backup sondern erstmal eine Momentaufnahme.
andre.nitschke
andre.nitschke 12.12.2023 um 07:50:24 Uhr
Goto Top
Das sieht nach einer guten Lösung aus, aber das müsste in ein Powershell Script, damit kenn ich mich nicht gut aus...
NordicMike
NordicMike 12.12.2023 um 09:27:47 Uhr
Goto Top
Da muss noch mehr dazu: Wie oft soll exportiert werden, wann sollen ältere .PST Dateien gelöscht werden, was passiert, wenn der Benutzer nicht abwartet und herunter fährt, was passiert, wenn der Rechner eine Weile nicht im Firmennetzwerk war und somit kein Zugriff auf U:
Das selbst zu basteln und alle Eventualitäten zu berücksichtigen ist selbst mit PowerShell Kenntnissen kein Zuckerschlecken. Es wäre einfacher mit einem simplen Backupprogramm.
andre.nitschke
andre.nitschke 14.12.2023 um 09:54:22 Uhr
Goto Top
Soll nur einmal exportiert werden, und wir gehen davon aus das der Benutzer wartet und nicht zwischendurch herunter fährt.
Also ein relativ simples .... Backup.
Das Script muss nur auf dem Client-REchner laufen und nicht auf dem Server.
colinardo
colinardo 14.12.2023 aktualisiert um 11:29:29 Uhr
Goto Top
Servus.
Rudimentäres Backup des Default-Stores in eine PST mit Bordmitteln am Client via Powershell z.B. so
# ===========================
# Backup Default Outlook Store to PST
# ===========================
# backup pst file
$backupfile = "U:\backup_${env:Username}_$(get-date -F yyyyMMdd_HHmm).pst"  
# ------------------------------------------------------
$ErrorActionPreference = 'Stop'  
if (Test-Path $backupfile){
    write-error "Backup '$backupfile' already exists! Exit." -Category InvalidOperation  
    return
}
# Get Outlook COM-Object
try{
    $ol = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")  
}catch{
    $ol = New-Object -Com Outlook.Application
}
# add backup store
$ol.Session.AddStore($backupfile)
$destinationStore = $ol.Session.Stores | ? FilePath -eq $backupfile
if(!$destinationStore){
    Write-Error "Backupstore mount failed." -Category InvalidData  
    return
}
write-host "Starting backup to '$backupfile' ..." -F Cyan  
# copy folders to backup store
foreach($folder in $ol.Session.DefaultStore.GetRootFolder().Folders){
    try{
        write-host "Copying folder '$($folder.FolderPath)' ... " -F Green -NoNewline  
        [void]$folder.Copyto($destinationStore)
        write-host "Done" -F Green  
    }catch{
        write-host "Error: $($_.Exception.Message)" -F Red  
    }
}
# unmount store from session
$ol.Session.RemoveStore($destinationStore.GetRootFolder())
# cleanup
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($folder)
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($ol)
[gc]::Collect()
write-host "Backup done." -F Cyan  
Grüße Uwe
andre.nitschke
andre.nitschke 14.12.2023 um 14:17:12 Uhr
Goto Top
Sichert das Script auch Kalender, Kontakte und Aufgaben mit?
Zieht es die Daten aus der lokalen PST oder vom Exchange Server?
colinardo
colinardo 14.12.2023 aktualisiert um 15:10:03 Uhr
Goto Top
Zitat von @andre.nitschke:

Sichert das Script auch Kalender, Kontakte und Aufgaben mit?
Ja, sämtliche Ordner des Default-Stores rekursiv. Kalender Kontakte etc. sind programmiertechnisch quasi auch nur "Ordner".
Zieht es die Daten aus der lokalen PST oder vom Exchange Server?
Sowohl als auch. Es holt die aktuellsten Daten vom Exchange sofern diese noch nicht lokal vorhanden sind/gecacht wurden.