none
Search-Mailbox pour supprimer des messages RRS feed

  • Question

  • Bonjour,

    Je souhaite supprimer un mail reçu par erreur par plusieurs utilisateurs. Etant en environnement Exchange 2010 SP1, je me penche donc sur la cmdlet Search-Maibox.

    Désirant avoir un "aperçu" de l'effet de cette commande, je l'utilise dans un premeir temps de la manière suivante :

     

    search-mailbox -identity "john doe" -searchquery 'Subject:"mon_sujet' -targetmailbox "administrateur" -targetfolder "searchanddeletelog" -logonly -loglevel full
    


    Seulement, cette commande ne se termine pas, c'est-à-dire que c'est comme si j'entrais dans un autre prompt, genre passage de DOS à telnet, et j'obtiens l'invite ">>" comme si EMS attendait que j'entre de nouvelles instructions :

    [PS] C:\Windows\system32>search-mailbox -identity "john doe" -searchquery 'Subject:"mon_sujet"' -targetmailbox "administrateur" -targetfolder "searchanddeletelog" -logonly -loglevel full
    >>

    Est-ce normal, et que dois-je faire par la suite ?

    D'avance merci.

    Bonne fin de semaine à toutes et tous.


    FXE
    vendredi 26 août 2011 10:28

Réponses

  • Bonjour,

    voici la commande que j'ai testé et qui fonctionne :

    Search-Mailbox -Identity "anthony costeseque" -SearchQuery "Sujet:'test'" -TargetMailbox "administrateur" -TargetFolder "Search" -LogOnly -LogLevel Full

    important la SearchQuery est localisée ! donc ce n'est pas Subject mais Sujet (si vous avez une install française)

    La commande va donc chercher dans la boite mail Anthony Costeseque tous les mails dont le sujet est test et sauvegarder le resultat dans la boite mail administrateur dans le répertoire Search.

    Le résultat de la requête contient un zip avec un csv listant tous les résultats avec le détail.

     

    Pour toutes questions n'hésitez pas,

    Anthony COSTESEQUE

    MCITP Enterprise Messaging Administrator 2007/2010

    VBC : https://www.mcpvirtualbusinesscard.com/VBCServer/acosteseque/profile


    Merci de marquer cette réponse si elle vous a aidée :)

    • Marqué comme réponse FXE samedi 27 août 2011 17:27
    samedi 27 août 2011 11:14
  • ah ;) base de données j'ai pensé dictionnaire ;))

    alors là par contre c'est encore plus simple car les cmdlet d'exchange sont très bien codées :)

     

    Get-Mailbox -Database DB01 | Search-Mailbox -SearchQuery "Sujet:'test'" -DeleteContent

    remplacer DB01 par le nom de votre database (si vous avez un doute sur les noms de vos databases : Get-MailboxDatabase)

     

    Pour toutes questions n'hésitez pas,

    Anthony COSTESEQUE

    MCITP Enterprise Messaging Administrator 2007/2010

    VBC : https://www.mcpvirtualbusinesscard.com/VBCServer/acosteseque/profile


    Merci de marquer cette réponse si elle vous a aidée :)

    • Marqué comme réponse FXE samedi 27 août 2011 20:33
    samedi 27 août 2011 19:28

Toutes les réponses

  • Bonjour,

    je ne suis pas surdoué en Powershell de exchange, mais pour supprimer un mail spécifique de toutes les boites Exchange, je vous conseille de jeter un coup d'oeil sur la methode élaboré par l'exchange Team: http://blogs.technet.com/b/exchange/archive/2010/10/27/3411398.aspx

    Bonne chance


    Best Regards Don't forget to mark it as answer if it helps
    samedi 27 août 2011 07:36
  • Bonjour et merci pour votre réponse.

    J'ai déjà exploré cette page, et elle concerne Exchange 2010 RTM, mais pas Exchange 2010 SP1.

    Bonne continuation.


    FXE
    samedi 27 août 2011 09:13
  • Bonjour,

    Ce fonctionnement n'est pas normal, essayer de voir s'il y a des espaces entre les attributs, de plus enlève les cotes avant subject et celle après la double cote de cette meme séquence.

    je pense que c'est plutot un probleme de ce type car la syntaxe est a priori parfaite.

    Bonne chance


    Best Regards Don't forget to mark it as answer if it helps
    samedi 27 août 2011 10:41
  • Bonjour,

    voici la commande que j'ai testé et qui fonctionne :

    Search-Mailbox -Identity "anthony costeseque" -SearchQuery "Sujet:'test'" -TargetMailbox "administrateur" -TargetFolder "Search" -LogOnly -LogLevel Full

    important la SearchQuery est localisée ! donc ce n'est pas Subject mais Sujet (si vous avez une install française)

    La commande va donc chercher dans la boite mail Anthony Costeseque tous les mails dont le sujet est test et sauvegarder le resultat dans la boite mail administrateur dans le répertoire Search.

    Le résultat de la requête contient un zip avec un csv listant tous les résultats avec le détail.

     

    Pour toutes questions n'hésitez pas,

    Anthony COSTESEQUE

    MCITP Enterprise Messaging Administrator 2007/2010

    VBC : https://www.mcpvirtualbusinesscard.com/VBCServer/acosteseque/profile


    Merci de marquer cette réponse si elle vous a aidée :)

    • Marqué comme réponse FXE samedi 27 août 2011 17:27
    samedi 27 août 2011 11:14
  • Bonjour Anthony et merci pour votre réponse.

    En effet, votre solution fonctionne, donc merci déjà pour cela !

    Du coup j'arrive à la seconde étape de mon processus : est-il possible de supprimer tous les messages en filtrant sur l'objet, mais également en filtrant sur une base de données précise ?

    Merci.

    Bon WE.


    FXE
    samedi 27 août 2011 17:27
  • Oui très simple grâce à powershell :)

    On commence par préparer le dictionnaire de mots ou phrase dans un fichier .txt

    dico.txt (avec un retour à la ligne pour séparer les mots et les phrases).

    prenons un exemple, j'ai fait un dico.txt avec dedans :

     

    test

    Exchange your Mind

    Appel manqué

     

     

    on remarque qu'il n'y a pas de problèmes avec les espaces, toute la phrase sur la même ligne sera le critere du Sujet:

    maintenant la commande powershell :

    Get-Content C:\Users\Administrateur\Desktop\dico.txt | % { Search-Mailbox -Identity "anthony costeseque" -SearchQuery "Sujet:'$_'" -DeleteContent }

     

    on envoi dans le pipe (|) 3 objets (de mon dico.txt) et ensuite grace à la cmdlet ForEach-Object ici remplacé par son alias %, j’exécute pour chaque objet la commande Search-Mailbox.

    Je fait appel à l'objet dans le pipe où en est le ForEach-Object grâce à la variable spéciale "$_"

    ici il s’exécutera 3 fois le Search-Mailbox et au final j'aurai supprimé de la boite aux lettres "anthony costeseque" tous les mail avec comme sujet : test, Exchange your Mind ou Appel manqué

    Attention le sujet n'est pas exclusif des mails avec comme sujet: "Appel manqué bla bla" seront pris aussi.

     

    Pour toutes questions n'hésitez pas,

    Anthony COSTESEQUE

    MCITP Enterprise Messaging Administrator 2007/2010

    VBC : https://www.mcpvirtualbusinesscard.com/VBCServer/acosteseque/profile


    Merci de marquer cette réponse si elle vous a aidée :)

     

    samedi 27 août 2011 18:16
  • Merci Anthony, mais j'ai dû être trop vague dans ma question.

    Voici le contexte : je dispose de 2 BDD Exchange BDD1.edb et BDD2.edb, avec des utilisateurs répartis entre ces 2 BDD.

    Le mail que je souhaite supprimé, je ne voudrais le supprimer que pour les utilisateurs stockés dans BDD1.edb. Donc ma question : est-il possible de filtrer au niveau BDD pour que la cmdlet ne s'exécute que pour les users stockés dans BDD1.edb ?

    Merci.

    Bonne fin de journée.


    FXE
    samedi 27 août 2011 18:59
  • ah ;) base de données j'ai pensé dictionnaire ;))

    alors là par contre c'est encore plus simple car les cmdlet d'exchange sont très bien codées :)

     

    Get-Mailbox -Database DB01 | Search-Mailbox -SearchQuery "Sujet:'test'" -DeleteContent

    remplacer DB01 par le nom de votre database (si vous avez un doute sur les noms de vos databases : Get-MailboxDatabase)

     

    Pour toutes questions n'hésitez pas,

    Anthony COSTESEQUE

    MCITP Enterprise Messaging Administrator 2007/2010

    VBC : https://www.mcpvirtualbusinesscard.com/VBCServer/acosteseque/profile


    Merci de marquer cette réponse si elle vous a aidée :)

    • Marqué comme réponse FXE samedi 27 août 2011 20:33
    samedi 27 août 2011 19:28
  • Rho... C'est quand même bien fait ce serveur de messagerie !

    Ca fait peur quand on met les mains dedans, mais une fois qu'un s'y habitue, la façon dont il est codé apparaît logique finalement !

     

    Merci encore pour votre aide.

    Bonne continuation.


    FXE
    samedi 27 août 2011 20:35