PST Export Scripten

  • Hallo zusammen,


    ich muss 40 Postfächen von unserem Exchange 2007 in PST Files exportieren.
    Dies mache ich über folgenden PS Befehl: Get-Mailbox -Identity Mailadresse | Export-Mailbox -PSTFolderPath c:\PST\Benutzer.pst


    Nun möchte ich das aber nicht 40 mal ausführen :roll:
    Da ich die Liste als Excel vor mir liegen habe und diese Problemlos in eine csv exportieren könnte, hätte ich gerne gewusst ob mir jemand sagen kann, wie ich es am besten scripten könnte, dass die Mailadressen aus der csv geholt werden und die pst nach dem Benutzer oder von mir aus den Nachnamen des Users benennt...?


    Vielen Dank!


    Gruss Marcel

  • Naja, das Problem ist, dass ich ja nicht alle Postfächer exportieren muss und dass diejenigen die ich exportieren möchte sich in unterschiedlichen DB's, OU's und Groups befinden...
    Ich denke mal, dass du auf das hinaus wolltest, oder habe ich das etwa falsch interpretiert?


    Gruss Marcel

  • Hallo Robert,


    nein, das ist ja das blöde, es sind wirklich alles unterschiedliche Postfächer! Verschiedene OU's, Groups, Abteilungen, usw...


    Das einzige was ich habe ist eine Liste mit einer Spalte in der die Mailadressen sind!


    Ich könnte aber Filterkriterien hinzufügen, da bei uns in den Eigenschaften der Postfächer unter Adresse und Telefon nichts befüllt ist...
    Leider kenne ich mich in der PS nicht so gut aus, musste bis jetzt nie was damit machen... Sollte vielleicht mal nen Kurs besuchen :roll:


    Schöne Grüße
    Marcel

    • Offizieller Beitrag

    Hallo Marcel,


    Lösung habe ich auch keine, aber Tipps.


    Suche mal nach "Ilse Van Criekinge" in der Suchmaschine deiner Wahl, dann findest du z.B.


    http://powerscripting.wordpres…-with-ilse-van-criekinge/


    Ich kenne niemand anderen, der so fit mit der Powershell bezüglich Exchange ist.


    Sie hat auch schon ein (oder mehr..) Buch dazu geschrieben.


    :)

    • Offizieller Beitrag

    Moin,


    so fit muss man mit der PowerShell gar nicht sein.


    Du hast die Daten schon in einer Datei mit Mail-Adresse?


    Wunderbar, dann ist das ganze sehr einfach.


    Vorraussetzung: Die Datei ist im "CSV"-Format, d.h. Kopfzeilen mit Spaltenbeschreibung, jeder Datensatz eine Zeile, komma-getrennte Werte.


    Dann geht das ganz wie folgt:


    Code
    import-csv xxxx | foreach-object { export-mailbox -id $_.yyyyy  zzzzz }


    Mehr brauchst Du als Admin nicht (mehr kann man natürlich machen, wenn man will)


    Anstelle von xxxx setzt Du den Dateinamen der CSV-Datei ein. Bei yyyyy kommt der Spaltenname der MailAdresse rein. Bei zzzz fügst Du die Parameter aus dem Link ein, den Nobby oben gepostet hat.

  • Okay gut, dann sollte das ganze so ausshen oder?


    Code
    import-csv c:\adressen.csv | foreach-object { export-mailbox -id $_.mailadresse  -PSTFolderPath C:\PST\ }


    Aber wie schaffe ich es dann, dass er mir die PST's nach dem Nachnamen des Users oder von mir aus auch den 1. Teil der Mailadresse zb. vorname.nachname benennt?


    Besten Dank!


    Schöne Grüße
    Marcel

    • Offizieller Beitrag

    Du kannst auf jeder Spalte der CSV-Datei zugreifen, in dem Du die "$_."-Variable nutzt.


    Wenn Du eine Spalte "vorname" hast, gibst Du "$_.vorname" an, usw.


    Beispiel:


    Code
    export-mailbox -id $_.mailadresse -PSTFolderPath C:\\ordername\\$_.vorname.pst

    Das Beispiel funktioniert aber nicht so einfach, da die PowerShell hier noch ein paar Besonderheiten hat! Es soll nur das Prinzip verdeutlichen.


    Damit es problemlos klappt, muss das ganze noch korrekt verpacken werden. Ich persönlich benutze dafür immer den Format-Parameter "-f", da das ganz dann sehr übersichtlich wird.


    Das Ergebnis sieht dann so aus:

    Code
    export-mailbox -id $_.mailadresse -PSTFolderPath ("c:\\ordner\\{0}.pst" -f $_.vorname)


    Wichtig sind die verschiedenen runden und geschweiften Klammern.


    Das ganz fügst Du dann oben in Deinem Beispiel ein.

  • Okay, nur damit ich das ganze jetzt richtig verstanden habe.


    Ich habe eine csv Datei die aussieht wie folgt:


    Mailadresse,Vorname
    vorname1.nachname1@domain.net,Vorname1
    vorname2.nachname2@domain.net,Vorname2
    usw.


    Was für ein Trennzeichen nimmt die PS? Komma?


    Dann verwende ich für den Export folgenden Befehl:


    import-csv c:\adressen.csv | foreach-object { export-mailbox -id $_.mailadresse -PSTFolderPath ("c:\ordner{0}.pst" -f $_.vorname) }


    Dieser Befehl bewirkt, dass aus der Datei adressen.csv die Adressen aus der Spalte Mailadressen gelesen bzw. exportiert werden. Diese wiederrum gehen dann ins Verzeichnis c:\ordner\ als PST welche den Dateinamen aus der Spalte Vorname der CSV Datei erhält...


    Ist das richtig so bzw. wäre auch der Code, so wie er hier steht mit geschwungene Klammern und so, richtig?


    Schöne Grüße


    Marcel