如果你像我一样,可能有大量脚本来管理 Microsoft 365 租户的不同部分。我通过在这些脚本运行后给自己发送一封电子邮件来监控这些脚本,然后我检查我的收件箱以确保它们成功运行。

随着基本身份验证在 Microsoft 365 中被弃用,你可能会在通过 PowerShell 脚本发送电子邮件时遇到问题。但这并不是微软在 PowerShell 中弃用 send-mailmessage 的唯一问题。

另一个问题是 MFA。也许您的组织需要对所有用户帐户进行 MFA。您不能期望每次希望脚本运行和发送电子邮件时都使用 MFA 登录!那太荒谬了。

幸运的是,我们并非别无选择。不过,还有一些设置要做。这是一个快速概述

  1. 在 Microsoft Entra 管理中心注册应用
  2. 分配权限以便应用可以发送电子邮件
  3. 在我们将发送电子邮件的计算机上创建一个自签名证书
  4. 将证书上传到我们的 Microsoft Entra 应用程序
  5. 安装 MG Graph PowerShell 模块
  6. 创建并运行脚本

所以让我们开始吧。

在 Microsoft Entra 管理中心注册应用

正如我上面提到的,我们需要在 Microsoft Entra 中注册一个应用程序。

powershell创建邮件规则(如何使用PowerShell通过)(1)

  1. 转到Microsoft Entra 管理中心> Applications > App registrations > New registration
  2. 将名称设置为Allow sending emails然后单击Register
分配权限以便应用可以发送电子邮件

接下来,我们需要授予我们的应用发送电子邮件的权限。

powershell创建邮件规则(如何使用PowerShell通过)(2)

在您注册的应用程序中单击API 权限>添加权限> Microsoft Graph

  • 选择应用程序权限> 在权限列表中查找并展开Mail > 检查Mail.Send >添加权限
  • 单击授予管理员同意>
  • 在我们将发送电子邮件的计算机上创建一个自签名证书

    现在我们需要跳转到发送电子邮件的计算机或服务器并创建一个自签名证书。

    powershell创建邮件规则(如何使用PowerShell通过)(3)

    1. 以管理员身份打开PowerShell 。
    2. 运行以下命令(将 gruber18.onmicrosoft.com 替换为您的租户):$Cert = New-SelfSignedCertificate -DnsName 'gruber18.onmicrosoft.com' -CertStoreLocation “Cert:\CurrentUser\My” -FriendlyName “Send_Emails” -KeySpec Signature - NotAfter(获取日期).AddYears(5)
    3. 运行以下命令:Get-ChildItem “Cert:\CurrentUser\my\$($Cert.Thumbprint)” | 导出证书-FilePath C:\graph.cer
    将证书上传到我们的 Microsoft Entra 应用程序

    接下来,我们会将证书上传到我们注册的 Microsoft Entra 应用程序。这样,Microsoft 就可以将我们上传的证书与我们将在发送电子邮件期间使用的证书进行比较。

    powershell创建邮件规则(如何使用PowerShell通过)(4)

    转到Microsoft Entra 管理中心> Applications > App registrations > 单击Allow sending emails

  • 单击Certificates & secrets > Certificates > Upload certificate >在Upload a certificate框中从C:\graph.cer选择您的证书。输入描述。单击添加
  • 安装 MG Graph PowerShell 模块

    我们可以使用 PowerShell 发送电子邮件之前的最后一步!我们只需要安装 MG Graph PowerShell 模块。这是我们将用于通过 PowerShell 发送电子邮件的模块。

    powershell创建邮件规则(如何使用PowerShell通过)(5)

    1. 以管理员身份打开 PowerShell。
    2. 运行安装模块 Microsoft.Graph
    3. 单击 Y,然后按 Enter。单击 Y,然后按 Enter。
    创建并运行脚本

    最后,我们完成了所有的准备工作。我们已经创建了一个应用程序并赋予了它正确的权限。我们已经创建了一个证书并将其上传到我们注册的应用程序。我们已经安装了 Graph PowerShell 模块。现在,我们可以通过 PowerShell 发送电子邮件了!

    powershell创建邮件规则(如何使用PowerShell通过)(6)

    返回到您在 Microsoft Entra 管理中心注册的应用。单击概览。

  • 复制应用程序(客户端)ID 和目录(租户)ID。
  • 单击证书和机密。复制指纹。
  • 输入以下 PowerShell,用您的信息替换 ClientId、TenantId、CertThumbprint、地址和 UserId。
  • $ClientId = ‘65bf8b60–3552–4621-ab36–9b6e7072093e’ $TenantId = ‘d01acbb1-ad7d-48bc-b82d-7597ca77ca95’ $CertThumbprint = ‘1F4B63E994D8513DE582A50B327A52F2C90C7551’ $Message = @{ subject = “Hello World!”; toRecipients = @(@{ emailaddress = @{ address = “ admin@gruber18.onmicrosoft.com”; }}); body = @{ contentType = “text”; content = “This is my test email.” } } Connect-MgGraph -ClientId $ClientId -TenantId $TenantId -CertificateThumbprint $CertThumbprint Select-MgProfile -Name v1.0 Send-MgUserMail -UserId “ John@gruber18.onmicrosoft.com” -Message $Message

    powershell创建邮件规则(如何使用PowerShell通过)(7)

    ,