如果你像我一样,可能有大量脚本来管理 Microsoft 365 租户的不同部分。我通过在这些脚本运行后给自己发送一封电子邮件来监控这些脚本,然后我检查我的收件箱以确保它们成功运行。
随着基本身份验证在 Microsoft 365 中被弃用,你可能会在通过 PowerShell 脚本发送电子邮件时遇到问题。但这并不是微软在 PowerShell 中弃用 send-mailmessage 的唯一问题。
另一个问题是 MFA。也许您的组织需要对所有用户帐户进行 MFA。您不能期望每次希望脚本运行和发送电子邮件时都使用 MFA 登录!那太荒谬了。
幸运的是,我们并非别无选择。不过,还有一些设置要做。这是一个快速概述
- 在 Microsoft Entra 管理中心注册应用
- 分配权限以便应用可以发送电子邮件
- 在我们将发送电子邮件的计算机上创建一个自签名证书
- 将证书上传到我们的 Microsoft Entra 应用程序
- 安装 MG Graph PowerShell 模块
- 创建并运行脚本
所以让我们开始吧。
在 Microsoft Entra 管理中心注册应用正如我上面提到的,我们需要在 Microsoft Entra 中注册一个应用程序。
- 转到Microsoft Entra 管理中心> Applications > App registrations > New registration。
- 将名称设置为Allow sending emails然后单击Register。
接下来,我们需要授予我们的应用发送电子邮件的权限。
在您注册的应用程序中单击API 权限>添加权限> Microsoft Graph
现在我们需要跳转到发送电子邮件的计算机或服务器并创建一个自签名证书。
- 以管理员身份打开PowerShell 。
- 运行以下命令(将 gruber18.onmicrosoft.com 替换为您的租户):$Cert = New-SelfSignedCertificate -DnsName 'gruber18.onmicrosoft.com' -CertStoreLocation “Cert:\CurrentUser\My” -FriendlyName “Send_Emails” -KeySpec Signature - NotAfter(获取日期).AddYears(5)
- 运行以下命令:Get-ChildItem “Cert:\CurrentUser\my\$($Cert.Thumbprint)” | 导出证书-FilePath C:\graph.cer
接下来,我们会将证书上传到我们注册的 Microsoft Entra 应用程序。这样,Microsoft 就可以将我们上传的证书与我们将在发送电子邮件期间使用的证书进行比较。
转到Microsoft Entra 管理中心> Applications > App registrations > 单击Allow sending emails。
我们可以使用 PowerShell 发送电子邮件之前的最后一步!我们只需要安装 MG Graph PowerShell 模块。这是我们将用于通过 PowerShell 发送电子邮件的模块。
- 以管理员身份打开 PowerShell。
- 运行安装模块 Microsoft.Graph
- 单击 Y,然后按 Enter。单击 Y,然后按 Enter。
最后,我们完成了所有的准备工作。我们已经创建了一个应用程序并赋予了它正确的权限。我们已经创建了一个证书并将其上传到我们注册的应用程序。我们已经安装了 Graph PowerShell 模块。现在,我们可以通过 PowerShell 发送电子邮件了!
返回到您在 Microsoft Entra 管理中心注册的应用。单击概览。
$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
,