Comment obtenir une liste des e-mails de plus de 2 ans dans la base de données Exchange, triés par utilisateur, à l'aide de Powershell?

8

Nous étudions actuellement l'archivage des e-mails et la refonte de notre politique de rétention. La grande question est (pour le service juridique), jusqu'où voulons-nous économiser? Actuellement, nos utilisateurs ont une énorme limite de boîtes aux lettres et, par le passé, ils ont tous pu archiver comme ils l'entendaient. Nous avons donc quelques centaines de Go de données qui ne sont pas dans la base de données Exchange, mais que nous finirions probablement par aspirer dans une base de données Archive pour la découverte. Ce que j'aimerais faire, c'est pouvoir quantifier pour l'équipe juridique combien cela coûterait si nous revenions 1 an, 2 ans, 3 ans, etc.

J'ai trouvé un script Powershell assez simple sur TheDailyAdmin qui fait ce que je veux pour la plupart, mais il regroupe le tout en une seule pile. Je voudrais pouvoir voir les résultats mais triés par utilisateur pour savoir que Sally a 47 Mo de plus de 2 ans, Charles a 190 Mo de plus de 2 ans, etc.

Voici le script que j'ai exécuté:

get-mailboxdatabase | get-mailbox -resultsize unlimited | get-mailboxfolderstatistics -folderscope all -includeoldestandnewestitems | export-csv mailbox_stats.csv

Cela fonctionne bien pour les mettre tous dans un fichier, mais je ne peux pas dire à qui appartient l'e-mail. Je l'ai également exécuté spécifiquement sur ma boîte aux lettres, mais je préfère ne pas l'exécuter manuellement sur chaque utilisateur car cela prendrait un certain temps! Je ne suis pas un gourou de Powershell mais j'espérais que quelqu'un là-bas a une compréhension plus ferme et peut m'aider à me diriger dans la bonne direction des commandes pour aider à le décomposer un peu plus.

Merci d'avance!

Don
la source

Réponses:

1

Recherchez dans Recherche multi-boîtes aux lettres / Recherche découverte ce dont vous avez besoin. Vous pouvez obtenir des statistiques par boîte aux lettres de dossiers individuels en modifiant votre script existant, mais pour obtenir la taille de tous les messages reçus dans une plage de dates, faites référence au lien ci-dessus. Ce ne sera en aucun cas une recherche rapide ...

août
la source
1

J'essayais de résoudre ce même problème et j'ai trouvé ce qui suit.

Vous aurez envie de définir $locationainsi que de changer le addyears(-1)nombre d'années que vous souhaitez. Dans cet exemple, -1 est il y a 1 an.

$Mailbox = Get-MailboxDatabase | Get-Mailbox

Foreach ($MBX in $Mailbox) {

$usermailbx = Get-Mailbox -identity $MBX | Get-MailboxStatistics
$userarchmailbx = Get-Mailbox -identity $MBX  | search-mailbox -SearchQuery "received<=$((get-date).addyears(-1).toString("yyyy-MM-ddTHH:mm:ssZ"))" -EstimateResultOnly
[pscustomobject]@{UserName=$usermailbx.displayname;TotalItemCount=$usermailbx.ItemCount;TotalItemSize=$usermailbx.totalitemsize.value;DeletedItemSize=$usermailbx.totaldeleteditemsize.value;ArchiveSize=$userarchmailbx.ResultItemsSize} | export-csv -append "$location\file.csv"
}
Nixphoe
la source
0

Les applets de commande Exchange PowerShell ne fournissent pas un moyen de collecter les statistiques que vous recherchez. Comme vous l'avez découvert, il ne peut agréger qu'un dossier; il ne peut pas casser les statistiques dans les plages de dates.

long cou
la source
Eh bien, la plage de dates est correcte, je viens d'utiliser un filtre Excel pour trier les éléments pour n'afficher que les éléments de plus de 2 ans. Cela semble fonctionner correctement, mais ce que je ne peux pas dire, c'est quel dossier appartient à quelle personne. Il s'agit simplement de mettre chaque dossier de chaque personne dans un .csv sans nom de chemin pour montrer à qui appartient ce dossier. J'espérais qu'il y a un paramètre de plus quelque part qui peut dire quelque chose comme "-displayUserPath" qui pourrait le clarifier pour moi. Merci pour la réponse!
Don