Partager via


Ajouter des fonctionnalités de messagerie aux scripts PowerShell à l’aide de Microsoft Graph

Dans cet article, vous allez étendre l’application que vous avez créée dans Générer des scripts PowerShell avec Microsoft Graph avec les API de messagerie Microsoft Graph. Vous utilisez Microsoft Graph pour répertorier la boîte de réception de l’utilisateur et envoyer un e-mail.

Lister la boîte de réception de l’utilisateur

Commencez par répertorier les messages dans la boîte de réception de l’utilisateur.

  1. Dans votre session PowerShell authentifiée, vérifiez que la $user variable est définie.

    PS > $user.DisplayName
    Megan Bowen
    
  2. Exécutez la commande suivante pour répertorier la boîte de réception de l’utilisateur.

    Get-MgUserMailFolderMessage -UserId $user.Id -MailFolderId Inbox -Select `
      "from,isRead,receivedDateTime,subject" -OrderBy "receivedDateTime DESC" `
      -Top 25 | Format-Table Subject,@{n='From';e={$_.From.EmailAddress.Name}}, `
      IsRead,ReceivedDateTime
    
  3. Passez en revue la sortie.

    Subject                                    From                    IsRead ReceivedDateTime
    -------                                    ----                    ------ ----------------
    Updates from Ask HR and other communities  Contoso Demo on Yammer  False  4/19/2022 10:19:02 PM
    Employee Initiative Thoughts               Patti Fernandez         False  4/19/2022 3:15:56 PM
    Voice Mail (11 seconds)                    Alex Wilber             False  4/18/2022 2:24:16 PM
    Our Spring Blog Update                     Alex Wilber             True   4/18/2022 1:52:03 PM
    Atlanta Flight Reservation                 Alex Wilber             False  4/13/2022 2:30:27 AM
    Atlanta Trip Itinerary - down time         Alex Wilber             False  4/12/2022 4:46:01 PM
    

Lister le code de boîte de réception expliqué

Considérez la commande utilisée pour répertorier la boîte de réception de l’utilisateur

Accès aux dossiers de courrier connus

La Get-MgUserMailFolderMessage commande génère une requête à l’API Répertorier les messages , en utilisant spécifiquement le point de GET /users/{user-id}/mailFolders/{folder-id}/messages terminaison. L’API retourne uniquement les messages dans le dossier de courrier demandé. Dans ce cas, étant donné que la boîte de réception est un dossier par défaut connu dans la boîte aux lettres d’un utilisateur, elle est accessible via son nom connu : -MailFolderId Inbox. Les dossiers non définis par défaut sont accessibles de la même façon, en remplaçant le nom connu par la propriété ID du dossier de messagerie. Pour plus d’informations sur les noms de dossiers connus disponibles, consultez Type de ressource mailFolder.

Accès à une collection

Contrairement à la Get-MgUser commande de la section précédente, qui retourne un seul objet, cette méthode retourne une collection de messages. La plupart des API de Microsoft Graph qui retournent une collection ne retournent pas tous les résultats disponibles dans une seule réponse. Au lieu de cela, ils utilisent la pagination pour retourner une partie des résultats tout en fournissant une méthode permettant aux clients de demander la page suivante.

Tailles de page par défaut

Les API qui utilisent la pagination implémentent une taille de page par défaut. Pour les messages, la valeur par défaut est 10. Les clients peuvent demander plus (ou moins) à l’aide du paramètre de requête $top . Dans le Kit de développement logiciel (SDK) Microsoft Graph PowerShell, l’ajout $top est effectué avec le -Top 25 paramètre .

Remarque

La valeur transmise via -Top est une limite supérieure, et non un nombre explicite. L’API retourne un certain nombre de messages jusqu’à la valeur spécifiée.

Tri des collections

La fonction utilise le -OrderBy paramètre sur la demande pour demander des résultats triés au moment de la réception du message (receivedDateTime propriété ). Il inclut les DESC mot clé afin que les messages reçus plus récemment soient répertoriés en premier. Ce paramètre ajoute le paramètre de requête $orderby à l’appel d’API.

Envoyer un message

Ajoutez maintenant la possibilité d’envoyer un e-mail en tant qu’utilisateur authentifié.

  1. Dans votre session PowerShell authentifiée, vérifiez que la $user variable est définie.

    PS > $user.DisplayName
    Megan Bowen
    
  2. Utilisez la commande suivante pour définir un objet représentant le corps de la demande pour l’API Envoyer un courrier .

    $sendMailParams = @{
        Message = @{
            Subject = "Testing Microsoft Graph"
            Body = @{
                ContentType = "text"
                Content = "Hello world!"
            }
            ToRecipients = @(
                @{
                    EmailAddress = @{
                        Address = ($user.Mail ?? $user.UserPrincipalName)
                    }
                }
            )
        }
    }
    
  3. Utilisez la commande suivante pour envoyer le message.

    Send-MgUserMail -UserId $user.Id -BodyParameter $sendMailParams
    

    Remarque

    Si vous effectuez des tests auprès d’un locataire développeur dans le cadre du Programme pour développeurs Microsoft 365, l’e-mail que vous envoyez risque de ne pas être remis et vous recevrez peut-être un rapport de non-remise. Si vous souhaitez débloquer l’envoi de courrier de votre locataire, contactez le support via le Centre d’administration Microsoft 365.

  4. Pour vérifier que le message a été reçu, répétez la Get-MgUserMailFolderMessage commande de l’étape précédente.

Explication de l’envoi du code de messagerie

Considérez les commandes utilisées pour envoyer un message.

Envoi de messages

La Send-MgUserMail commande génère une requête à l’API Envoyer un courrier .

Création d’objets

Contrairement aux appels précédents à Microsoft Graph qui ne lisent que les données, cet appel crée des données. Pour créer des éléments avec le SDK, vous créez un objet représentant le corps de la requête, définissez les propriétés souhaitées, puis passez-le dans le BodyParameter paramètre .

Étape suivante