[Scripts] Export PST depuis exchange 2007

Export PST depuis exchange 2007 [Scripts] - Management du SI - Systèmes & Réseaux Pro

Marsh Posté le 19-10-2010 à 11:14:40    

Bonjour à tous.
 
Je suis désolé si je suis dans la mauvaise section ... Je ne suis pas sûr de devoir le mettre ici ...
 
1 - Principe
 
Le but de se script est de permettre d'exporter une ou plusieurs boîte mail d'un serveur exchange sur un disque local au format .PST (intégrable à outlook ou pour réimporter sur le serveur exchange).
 
Il n'utilise aucune "bidouille", simplement des commandes powershell de base de l'exchange management SHELL.
 
! IMPORTANT !
Ce script n'a été testé que sur une version 2007 du serveur EXCHANGE !! Il n'est donc pas conseillé de l'utiliser sur une vesion 2010, et il ne fonctionnera pas sur 2003 ou précédent.

 
2 - Implémentation
 
2.1 - Prérequis
 
L'export de boîte mail ne peut se faire que sur un ordinateur possédant une version 32 Bits des outils d'administration Exchange téléchargeable ici http://www.microsoft.com/downloads [...] laylang=en !!! N'installer que les outils d'administrations !!!
 
Être loggé sur le pc avec un compte administrateur du domaine (Gestion des droits sur les boîtes mails).
 
2.2 - Installation
 
Une fois les prérequis installé, il va nous valloir créer un répertoir pour stocker le script, exemple "C:\sources".
Dans ce répertoire sources créer un nouveau document text et le nommer de la sorte : "exchange_utilities.ps1".
Editer le fichier (notepad ou autre) pour insérer le script suivant :
 

Code :
  1. # Auteur : Nicolas VALLON (Belgium)
  2. # Date : 19/10/2010
  3. # Version : 0.2 
  4. function export {
  5.     echo ""
  6.     echo ">>>>>>>>>>>>>>>>>>>>> Programme d extraction PST <<<<<<<<<<<<<<<<<<<<<<<<<"
  7.     echo ""
  8.     echo "Ce Script permet d'exporter le contenu d'une boite mail depuis le serveur"
  9.     echo "exchange afin de la récupérer en format PST en local."
  10.     echo "Ce script ne supprime pas la boîte et ne cause aucune coupure."
  11.     echo ""
  12.     $identity=Read-Host "Saisir nom de la personne concernée"
  13.     echo ""
  14.     echo "Informations sur le compte"
  15.     get-mailbox -Identity "$identity"
  16.     echo ""
  17.     echo "Affectation des droits d'exportation sur le compte :"
  18.     Add-MailboxPermission -identity "$identity" -User $env:USERNAME -AccessRights FullAccess
  19.     echo ""
  20.     $rep=Read-Host "Saisissez le chemin d'export (par défaut C:\)"
  21.     if($rep -eq "" ){Export-Mailbox -Identity "$identity" -PSTFolderPath "C:\" -confirm:$false}
  22.         Else {Export-Mailbox -Identity "$identity" -PSTFolderPath $rep -confirm:$false}
  23.     echo "Retrait des droits d'exportation sur le compte ..."
  24.     Remove-MailboxPermission -identity "$identity" -User $env:USERNAME -AccessRights FullAccess -confirm:$false
  25.     echo ""
  26.     echo "*** Opération terminée avec succes ***"
  27.     echo "*** Appuyez une une touche pour revenir au menu ***"
  28.     $host.UI.RawUI.ReadKey() | MENU
  29. }
  30. function export_multi {
  31.     $erroractionpreference = "SilentlyContinue"
  32.     echo ""
  33.     echo ">>>>>>>>>>>>>>>>>>> Programme d extraction de masse <<<<<<<<<<<<<<<<<<<<<<"
  34.     echo ""
  35.     echo "Ce Script permet d'exporter le contenu de plusieurs boite mail."
  36.     echo "Une vérification de chaque nom entré est exécutée, faites donc un peu"
  37.     echo "attention au message d'alerte qui peu se produire lorsque vous appuyez sur"
  38.     echo "ENTER."
  39.     echo ""
  40.     echo "Les nom peuvent être saisi de différentes mannières, Exemple :"
  41.     echo "- Nicolas Vallon"
  42.     echo "- FOMAINE_NAME\n.vallon (compte utilisateur)"
  43.     echo "- n.vallon (compte utilisateur)"
  44.     echo "- nicolas.vallon@domaine.extension (adresse mail classique)"
  45.     echo ""
  46.     echo "Lorsque la saisie est terminée, il vous suffit de laisser le champs vide"
  47.     echo "pour passer à la suite des instructions."
  48.     echo ""
  49.     echo "Ce script ne supprime pas la boîte et ne cause aucune coupure."
  50.     echo ""
  51.     do{
  52.     $vérification=0
  53.         do{
  54.             $temp = ""
  55.             $temp=Read-Host "Saisir nom du compte numéro $num_compte"
  56.             $Mailbox = Get-Mailbox $temp
  57.       if ($Mailbox) {
  58.        $vérification=1
  59.                 $a = $a + , $temp
  60.       } else {
  61.                 Write-Warning "La boîte mail n'existe pas, ou n'a pas été trouvée dans l'active directory."
  62.             }
  63.         }while($vérification -eq 0)
  64.     }while($temp -NotLike "" )
  65.     $rep=Read-Host "Saisissez le chemin d'export (par défaut C:\)"
  66.     for($x=0;$x -le ($a.length-1); $x++){
  67.         echo "Informations sur le compte"
  68.         get-mailbox -Identity $a[$x]
  69.         echo ""
  70.         echo "Affectation des droits d'exportation sur le compte :"
  71.         Add-MailboxPermission -identity $a[$x] -User $env:USERNAME -AccessRights FullAccess
  72.         echo ""
  73.         if($rep -eq "" ){Export-Mailbox -Identity $a[$x] -PSTFolderPath "C:\" -confirm:$false}
  74.             Else {Export-Mailbox -Identity $a[$x] -PSTFolderPath $rep -confirm:$false}
  75.         echo "Retrait des droits d'exportation sur le compte ..."
  76.         Remove-MailboxPermission -identity $a[$x] -User $env:USERNAME -AccessRights FullAccess -confirm:$false
  77.     }
  78.     Write-Host "Appuyez sur n'importe quelle touche pour revenir au menu."
  79.     $host.UI.RawUI.ReadKey() | MENU
  80. }
  81. Function MENU {
  82.     cls
  83.     echo "**************************************************************************"
  84.     echo "                            EXCHANGE Utilities"
  85.     echo "**************************************************************************"
  86.     echo ""
  87.     echo "1 - Exporter une boite en pst"
  88.     echo "2 - Exportation de masse [PST]"
  89.     echo ""
  90.     $choice=Read-Host "Saisissez votre choix"
  91.     echo ""
  92.     if($choice -eq 1){export}
  93.     if($choice -eq 2){export_multi}
  94.         else {
  95.             MENU
  96.         }
  97. }
  98. MENU


 
Sur le bureau (ou ailleurs c'est comme vous le désirez) créer un nouveau raccourci qui pointera sur C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  
Attention ce chemin peut changer selon la version de windows.
Faire ensuite un clic-droit / Propriété sur le raccourci et modifier la cible comme suit :

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -noexit -command ". 'C:\sources\Exchange_utilities.ps1'"


Nous pointons toujours sur le powershell auquel nous ajoutons les fonctionnalités exchange grace aux outils d'administration exchange frêchement installé.
 "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" : Peut varier selon votre version de windows ou fonction de vos choix d'installation des outils exchange.
 
3 - Utilisation
 
3.1 - Exporter une boite mail
 
Lancer le script par le raccourci du bureau.
 
La fenêtre suivante s'affiche :
http://img819.imageshack.us/img819/959/25185143.jpg
Un simple menu pour choisir l'opération à opérer, pour exporter une seule boite faire choix 1 (Note : Il est tout à fais possible de passer par le choix 2, mais dans le choix 2 les message d'erreur d'acquisition d'info de la boites sont désactivé pour un traitement plus rapide, et donc moins conseillé)
 
http://img683.imageshack.us/img683/98/112hf.jpg
Saisir le nom de la personne.
 
http://img204.imageshack.us/img204/9752/113lkz.jpg
Le script vous affiche les information de location de la boîte et vous accorde les droits dessus pour pouvoir l'exporter.
Saisir le chemin d'export ATTENTION ! Par défaut c'est le C: ! Ces chemins sont locaux, donc sur votre machine (et non le serveur) mais il est tout à fais possible d'entrer un chemin réseau de type \\server_name
 
http://img96.imageshack.us/img96/8194/sanstitre1copieq.jpg
La copie s'éxécute.
 
A la fin de la copie, le scripts supprime les droits ajoutés au début (pour l'export) et affiche un log de la copie. (Il vous indiquera également un chemin pour trouver le log en local).
 
A VENIR :
- Tuto sur l'exportation de masse (une explication est déjà inscrite lorsque vous l'exécutez).
- Code comentaires (pour vous aidez à le comprendre)
Aujourd'hui un HFRiens a besoin du code ... C'est pour cette raison que je suis obligé de le poster si vite !  :jap:


Message édité par ChaTTon2 le 19-10-2010 à 16:08:08

---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 19-10-2010 à 11:14:40   

Reply

Marsh Posté le 19-10-2010 à 11:21:27    

MAJ 0.2 :
- Suppression de la limite de 20 exports à la suite ... Le nombre est maintenant illimité.


Message édité par ChaTTon2 le 19-10-2010 à 16:03:49

---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 19-10-2010 à 11:21:54    

RESERVE
Remerciements contributions  :jap:


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 19-10-2010 à 15:59:40    

T'es un dieu :love:


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 19-10-2010 à 16:00:10    

Je vote "chatton2", président :o


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 19-10-2010 à 17:04:09    

Je n'ai rien inventé :) ce sont des commandes implémentés, c'est juste un outils fort pratique pour quand je suis en vacances, et qu'on ne m'appel pas pour backuper la bal d'un utilisateur qui est parti ...
 
Les appel à 8:00 du mat ca commence à énerver madame :O


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 19-10-2010 à 17:43:55    

change de femme !!
[:cupra]


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 20-10-2010 à 12:11:24    

ça existe des vrais informaticiens qui font du powershell, ouahhh :)
Merci à toi en tout cas.

Reply

Marsh Posté le 01-11-2010 à 20:45:19    

Une remarque : j'ai un un soucis de droits pour l'export des BAL, autre que la mienne.
Avec ce script, d'autre on eu le soucis ?
Je vais peut-etre le modifier pour ajouter en dur mon nom d'utilisateur, j'imagine que ca a couillé par là, le script semble nikel avec l'ajout des droits. (Ou ya un temps d'approbation ? )


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 01-11-2010 à 21:04:12    

L'ajout de droit sur une mailbox peut prendre jusqu'à 2h. Il y a un cache sur le information store d'Exchange. Si tu as essayé d'y accéder et que tu n'avais pas le droit alors il a dans le cache la tentative ratée et il faut attendre ou sinon il faut restarter le service.
 
Me semblait que certaines applications de droit étaient instantannées mais peut être me trompe-je

Reply

Marsh Posté le 01-11-2010 à 21:04:12   

Reply

Marsh Posté le 01-11-2010 à 23:24:09    

Le "clic droit-> ajouter le control total -> choisir user" est instantané, je récupère direct le droit qu'il me faut (en particulier sur le export-mailbox)
Une différence entre ça et le script (Add-MailboxPermission -identity "$identity" -User $env:USERNAME -AccessRights FullAccess) ?


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 02-11-2010 à 08:18:57    

Quand tu utilises la console de gestion, j'imagine que tu es loggué en Administrateur sur le serveur ?
 
Peut être juste une question de droit de ton compte AD à modifier les droits d'accès ? Loggue toi en administrateur pour lancer le scripts ou fais un clic droit "éxécuter en tant que" :)


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Marsh Posté le 02-11-2010 à 19:11:14    

Je suis logué sur mon poste sur ma sessions utilisateur, lequel compte est membre des admins du domaine.
je ne suis pas sur le serveur quand j'utilise ton script.


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 02-11-2010 à 20:34:47    

Pour ce genre de commande (export/import) c'est mieux d'être au plus pres d'où se trouve la bal pour des questions évidentes de perf.
 
Je pense pas que par défaut domain admins ait full control sur les mailbox.
Tu peux toujours checker les droits sur la mailbox voir si oui ou non tu les as

Reply

Marsh Posté le 02-11-2010 à 22:18:14    

Je@nb a écrit :

Pour ce genre de commande (export/import) c'est mieux d'être au plus pres d'où se trouve la bal pour des questions évidentes de perf.
 
Je pense pas que par défaut domain admins ait full control sur les mailbox.
Tu peux toujours checker les droits sur la mailbox voir si oui ou non tu les as


ah mais aucun doute, j'ai pas l'acces total, je l'ajoute avant un export, mais je le fais depuis les outils de gestions sur mon poste, et là c'est instantané.
J'avais dans l'idée que depuis les outils de gestions graphiques, c'était ni plus ni moins qu'une interface graphique du powershell


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 03-11-2010 à 08:35:30    

tuxbleu a écrit :


ah mais aucun doute, j'ai pas l'acces total, je l'ajoute avant un export, mais je le fais depuis les outils de gestions sur mon poste, et là c'est instantané.
J'avais dans l'idée que depuis les outils de gestions graphiques, c'était ni plus ni moins qu'une interface graphique du powershell


Ha la vue de l'exchange 2010 ... Je confirme que oui :)
 
Et si tu essayes de te logguer sur ton poste en Administrateur ?


---------------
Mon feed-back : http://forum.hardware.fr/hfr/Achat [...] 1974_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed