Question
Script import/export outlook
- baptiste
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 7 ans 8 mois #25724
par baptiste
Script import/export outlook a été créé par baptiste
Bonjour,
Je viens de rentrer en alternance administrateur réseau dans une entreprise et ils vont bientôt changer leur serveur mail et passer sur du office 365. Ils ont prévu 1 jour entier de mobilisation de l'équipe informatique pour exporter manuellement en .pst les mails des utilisateurs (un par un), créer manuellement un nouveau profil outlook, et importer manuellement les .pst dans le nouveau compte ... Opération longue et pas très productive ...
Je me demandais s'il n'y avait pas un moyen d'optimiser ces actions par le biais d'un script powershell ou autre (je m'oriente vers du powershell particulièrement car j'aimerais bien apprendre ce langage
).
Seulement à l'heure actuelle, ma connaissance de powershell est trop limitée pour me lancer dans l'écriture d'un tel script ...
Merci pour votre aide
Je viens de rentrer en alternance administrateur réseau dans une entreprise et ils vont bientôt changer leur serveur mail et passer sur du office 365. Ils ont prévu 1 jour entier de mobilisation de l'équipe informatique pour exporter manuellement en .pst les mails des utilisateurs (un par un), créer manuellement un nouveau profil outlook, et importer manuellement les .pst dans le nouveau compte ... Opération longue et pas très productive ...
Je me demandais s'il n'y avait pas un moyen d'optimiser ces actions par le biais d'un script powershell ou autre (je m'oriente vers du powershell particulièrement car j'aimerais bien apprendre ce langage
Seulement à l'heure actuelle, ma connaissance de powershell est trop limitée pour me lancer dans l'écriture d'un tel script ...
Merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- de França
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 67
- Remerciements reçus 0
il y a 7 ans 8 mois #25725
par de França
Réponse de de França sur le sujet Re:Script import/export outlook
Hello,
Je suis exactement dans un même projet sauf que la migration est Exchange 2007 on prem -> Exchange 2013 on prem. Mais pour du 365 tu dois pouvoir utiliser +/- les mêmes commandes PS.
Dans ce processus il a été décidé de réintégrer les PSTs de nos +2000 utilisateurs dans leur boite d'archive et de les rendre inaccessibles.
Ici tu as une référence pour réaliser l'import en office 365:
blogs.perficient.com/2016/08/15/office-3...rage-via-powershell/
Sinon parmis tant d'autre script pour loger les infos des PST, les déconnecter, les masquer etc. voici ci-dessous celui que j'utilise pour intégrer les PST des utilisateurs. J'ai dans un CSV la liste des utilisateurs avec l'emplacement officiel des PST pour chacun d'eux ($pstPath) c'est uniquement ceux-ci qui sont réintégrés chez nous. Il y a également une exclusion de PST générés par Sharepoint via une regex, tu peux adapter à ton usage si tu veux essayer.
[code:1]
#Script to be run on Exchange Online
#This script will create the batch to Move Mailbox to Exchange Online
#############################EXECUTION#############################
$PwdEncrypted = \"xxxxxxx\"
$User = \"xxxx\xxxxx\"
$Password = ConvertTo-SecureString -string $PwdEncrypted
$Credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $User,$Password
#Connect to Exchange On Premise
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri exchangeserver.domaine/PowerShell/ -Authentication Kerberos -Credential $Credential
Import-PSSession $Session
##########################################
$batchName = Get-ChildItem -Path \"C:\Dev\ExchangeMigration\OUT\CurrentBatchName.txt\" | Get-Content
$now = [datetime]::Now.ToString('yyyy.MM.dd - HH:mm')
$csv = Import-csv \"C:\Dev\ExchangeMigration\CSV\ToBeMigrated.csv\"
$logFile = \"\\fileServer\xxx\LogPST\usersLog.txt\"
foreach($user in $csv){
#$ignoredFiles1 = \"Sharepoint\([0-9]?[0-9]\).pst\"
write-host($user.Alias)
$outArray = @()
$userAlias = $user.alias
$userName = $user.emailaddress
$pstPath = $user.pstPath
$Group = \"GGS_MIGRATED_TO_E2K13\"
$name = \"$now`_$userName`_PSTimport\"
$userLogFile = \"\\fileServer\xxx\LogPST\$userAlias-userLog.txt\"
$i = 0
# Ignorer les fichiers PST généré automatiquement par Sharepoint Abonnements à des calendriers Internet(\([0-9]?[0-9]?[0-9]\)|).pst
if($pstPath -match \"\\\"«») {
$psts = get-childitem $pstPath -Recurse | where{ ($_.FullName -notmatch \"Listes Sharepoint(\([0-9]?[0-9]?[0-9]\)|).pst\"«») -and ($_.FullName -notmatch \"Abonnements à des calendriers Internet(\([0-9]?[0-9]?[0-9]\)|).pst\"«»)}
}
foreach($pst in $psts){
$pstName = $pst.Name
$pstPath = $pst.FullName
Try{
New-MailboxImportRequest -Mailbox $userName -FilePath $pstPath -TargetRootFolder $pstName -Name \"$userAlias`_MailboxImport$i\" -isArchive -acceptlargedataloss -baditemlimit 100 -ErrorAction Stop
$outArray += [Array]\"Imported|$userAlias|$pstPath|$now\"
$i++
}Catch{
$outArray += [Array]\"CouldntBeImported|$userAlias|$pstPath|$now\"
}
}
$requestsImp = Get-MailboxImportRequest -Mailbox $userAlias
$outArray += \"ImportStats|$userAlias|$($psts.length)-$($requestsImp.length)|$now\"
Add-ADGroupMember $Group $userAlias
$outArray | Out-File $userLogFile -append
$outArray | Out-File $logFile -append
}
Remove-PSSession $Session
[/code:1]
Après cela j'utilise encore des script powershell au logon et au logoff des utilisateurs pour délinker les PST d'Outlook et loger toutes les infos lié à ceux-ci pour finalement déplacer, masquer et renommer les PST afin qu'ils ne soient plus utilisés.
Je suis exactement dans un même projet sauf que la migration est Exchange 2007 on prem -> Exchange 2013 on prem. Mais pour du 365 tu dois pouvoir utiliser +/- les mêmes commandes PS.
Dans ce processus il a été décidé de réintégrer les PSTs de nos +2000 utilisateurs dans leur boite d'archive et de les rendre inaccessibles.
Ici tu as une référence pour réaliser l'import en office 365:
blogs.perficient.com/2016/08/15/office-3...rage-via-powershell/
Sinon parmis tant d'autre script pour loger les infos des PST, les déconnecter, les masquer etc. voici ci-dessous celui que j'utilise pour intégrer les PST des utilisateurs. J'ai dans un CSV la liste des utilisateurs avec l'emplacement officiel des PST pour chacun d'eux ($pstPath) c'est uniquement ceux-ci qui sont réintégrés chez nous. Il y a également une exclusion de PST générés par Sharepoint via une regex, tu peux adapter à ton usage si tu veux essayer.
[code:1]
#Script to be run on Exchange Online
#This script will create the batch to Move Mailbox to Exchange Online
#############################EXECUTION#############################
$PwdEncrypted = \"xxxxxxx\"
$User = \"xxxx\xxxxx\"
$Password = ConvertTo-SecureString -string $PwdEncrypted
$Credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $User,$Password
#Connect to Exchange On Premise
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri exchangeserver.domaine/PowerShell/ -Authentication Kerberos -Credential $Credential
Import-PSSession $Session
##########################################
$batchName = Get-ChildItem -Path \"C:\Dev\ExchangeMigration\OUT\CurrentBatchName.txt\" | Get-Content
$now = [datetime]::Now.ToString('yyyy.MM.dd - HH:mm')
$csv = Import-csv \"C:\Dev\ExchangeMigration\CSV\ToBeMigrated.csv\"
$logFile = \"\\fileServer\xxx\LogPST\usersLog.txt\"
foreach($user in $csv){
#$ignoredFiles1 = \"Sharepoint\([0-9]?[0-9]\).pst\"
write-host($user.Alias)
$outArray = @()
$userAlias = $user.alias
$userName = $user.emailaddress
$pstPath = $user.pstPath
$Group = \"GGS_MIGRATED_TO_E2K13\"
$name = \"$now`_$userName`_PSTimport\"
$userLogFile = \"\\fileServer\xxx\LogPST\$userAlias-userLog.txt\"
$i = 0
# Ignorer les fichiers PST généré automatiquement par Sharepoint Abonnements à des calendriers Internet(\([0-9]?[0-9]?[0-9]\)|).pst
if($pstPath -match \"\\\"«») {
$psts = get-childitem $pstPath -Recurse | where{ ($_.FullName -notmatch \"Listes Sharepoint(\([0-9]?[0-9]?[0-9]\)|).pst\"«») -and ($_.FullName -notmatch \"Abonnements à des calendriers Internet(\([0-9]?[0-9]?[0-9]\)|).pst\"«»)}
}
foreach($pst in $psts){
$pstName = $pst.Name
$pstPath = $pst.FullName
Try{
New-MailboxImportRequest -Mailbox $userName -FilePath $pstPath -TargetRootFolder $pstName -Name \"$userAlias`_MailboxImport$i\" -isArchive -acceptlargedataloss -baditemlimit 100 -ErrorAction Stop
$outArray += [Array]\"Imported|$userAlias|$pstPath|$now\"
$i++
}Catch{
$outArray += [Array]\"CouldntBeImported|$userAlias|$pstPath|$now\"
}
}
$requestsImp = Get-MailboxImportRequest -Mailbox $userAlias
$outArray += \"ImportStats|$userAlias|$($psts.length)-$($requestsImp.length)|$now\"
Add-ADGroupMember $Group $userAlias
$outArray | Out-File $userLogFile -append
$outArray | Out-File $logFile -append
}
Remove-PSSession $Session
[/code:1]
Après cela j'utilise encore des script powershell au logon et au logoff des utilisateurs pour délinker les PST d'Outlook et loger toutes les infos lié à ceux-ci pour finalement déplacer, masquer et renommer les PST afin qu'ils ne soient plus utilisés.
Connexion ou Créer un compte pour participer à la conversation.
- baptiste
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 7 ans 8 mois #25726
par baptiste
Réponse de baptiste sur le sujet Re:Script import/export outlook
Salut,
Merci pour ta réponse et pour ton script
Seulement j'ai oublié de préciser qu'actuellement on utilise un serveur mail hébergé sur Zimbra, et que je n'ai pas la main sur le serveur mail ... C'est pour ça que je voulais faire une extraction directement depuis les clients outlook ...
Je pensais trouver un script que j'aurais déployé par gpo pour sauvegarder les mails en .pst, créer le nouveau compte dans outlook avec les infos de office 365, et importer le .pst sauvegardé ^^
Merci pour ta réponse et pour ton script
Seulement j'ai oublié de préciser qu'actuellement on utilise un serveur mail hébergé sur Zimbra, et que je n'ai pas la main sur le serveur mail ... C'est pour ça que je voulais faire une extraction directement depuis les clients outlook ...
Je pensais trouver un script que j'aurais déployé par gpo pour sauvegarder les mails en .pst, créer le nouveau compte dans outlook avec les infos de office 365, et importer le .pst sauvegardé ^^
Connexion ou Créer un compte pour participer à la conversation.
- de França
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 67
- Remerciements reçus 0
il y a 7 ans 8 mois #25727
par de França
Réponse de de França sur le sujet Re:Script import/export outlook
Tu aurais eu la main sur Exchange ça aurait été une autre histoire mais la à mon avis tu as meilleur temps de t'en tenir au plan initial du coup.
Connexion ou Créer un compte pour participer à la conversation.
- baptiste
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 7 ans 8 mois #25728
par baptiste
Réponse de baptiste sur le sujet Re:Script import/export outlook
Pour les scripts depuis exchange online on en trouve pas mal sur le net
j'aurais commencé par la, mais la je n'ai rien trouvé pour mon cas, je pensais que ça pouvait se faire ...
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.060 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script import/export outlook