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-Key: 81347236442

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

Printed on: May 24, 2024 at 03:05 o'clock

Member: manuel-r
manuel-r Dec 11, 2023 at 07:07:00 (UTC)
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
Mitglied: 8030021182
8030021182 Dec 11, 2023 at 07:10:22 (UTC)
Goto Top
Member: em-pie
em-pie Dec 11, 2023 at 07:37:25 (UTC)
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
Member: NordicMike
NordicMike Dec 11, 2023 at 08:26:31 (UTC)
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.
Member: andre.nitschke
andre.nitschke Dec 12, 2023 at 06:43:15 (UTC)
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.
Member: andre.nitschke
andre.nitschke Dec 12, 2023 at 06:50:24 (UTC)
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...
Member: NordicMike
NordicMike Dec 12, 2023 at 08:27:47 (UTC)
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.
Member: andre.nitschke
andre.nitschke Dec 14, 2023 at 08:54:22 (UTC)
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.
Member: colinardo
colinardo Dec 14, 2023 updated at 10:29:29 (UTC)
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
Member: andre.nitschke
andre.nitschke Dec 14, 2023 at 13:17:12 (UTC)
Goto Top
Sichert das Script auch Kalender, Kontakte und Aufgaben mit?
Zieht es die Daten aus der lokalen PST oder vom Exchange Server?
Member: colinardo
colinardo Dec 14, 2023 updated at 14:10:03 (UTC)
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.