电脑软件发到邮箱怎么样做(如何使用 PowerShell 通过 Microsoft 365 发送电子邮件)
如果你像我一样,可能有大量脚本来管理Microsoft365租户的不同部分。我通过在这些脚本运行后给自己发送一封电子邮件来监控这些脚本,然后我检查我的收件箱以确保它们成功运行。
随着基本身份验证在Microsoft365中被弃用,你可能会在通过PowerShell脚本发送电子邮件时遇到问题。但这并不是微软在PowerShell中弃用send-mailmessage的唯一问题。
另一个问题是MFA。也许您的组织需要对所有用户帐户进行MFA。您不能期望每次希望脚本运行和发送电子邮件时都使用MFA登录!那太荒谬了。
幸运的是,我们并非别无选择。不过,还有一些设置要做。这是一个快速概述
在MicrosoftEntra管理中心注册应用分配权限以便应用可以发送电子邮件在我们将发送电子邮件的计算机上创建一个自签名证书将证书上传到我们的MicrosoftEntra应用程序安装MGGraphPowerShell模块创建并运行脚本
所以让我们开始吧。
在MicrosoftEntra管理中心注册应用
正如我上面提到的,我们需要在MicrosoftEntra中注册一个应用程序。
转到MicrosoftEntra管理中心>Applications>Appregistrations>Newregistration。将名称设置为Allowsendingemails然后单击Register。分配权限以便应用可以发送电子邮件
接下来,我们需要授予我们的应用发送电子邮件的权限。
在您注册的应用程序中单击API权限>添加权限>MicrosoftGraph
选择应用程序权限>在权限列表中查找并展开Mail>检查Mail.Send>添加权限。单击授予管理员同意>是在我们将发送电子邮件的计算机上创建一个自签名证书
现在我们需要跳转到发送电子邮件的计算机或服务器并创建一个自签名证书。
以管理员身份打开PowerShell。运行以下命令(将gruber18.onmicrosoft.com替换为您的租户):$Cert=New-SelfSignedCertificate-DnsName'gruber18.onmicrosoft.com'-CertStoreLocation“Cert:\CurrentUser\My”-FriendlyName“Send_Emails”-KeySpecSignature-NotAfter(获取日期).AddYears(5)运行以下命令:Get-ChildItem“Cert:\CurrentUser\my\$($Cert.Thumbprint)”|导出证书-FilePathC:\graph.cer将证书上传到我们的MicrosoftEntra应用程序
接下来,我们会将证书上传到我们注册的MicrosoftEntra应用程序。这样,Microsoft就可以将我们上传的证书与我们将在发送电子邮件期间使用的证书进行比较。
转到MicrosoftEntra管理中心>Applications>Appregistrations>单击Allowsendingemails。
单击Certificates&secrets>Certificates>Uploadcertificate>在Uploadacertificate框中从C:\graph.cer选择您的证书。输入描述。单击添加。安装MGGraphPowerShell模块
我们可以使用PowerShell发送电子邮件之前的最后一步!我们只需要安装MGGraphPowerShell模块。这是我们将用于通过PowerShell发送电子邮件的模块。
以管理员身份打开PowerShell。运行安装模块Microsoft.Graph单击Y,然后按Enter。单击Y,然后按Enter。创建并运行脚本
最后,我们完成了所有的准备工作。我们已经创建了一个应用程序并赋予了它正确的权限。我们已经创建了一个证书并将其上传到我们注册的应用程序。我们已经安装了GraphPowerShell模块。现在,我们可以通过PowerShell发送电子邮件了!
返回到您在MicrosoftEntra管理中心注册的应用。单击概览。
复制应用程序(客户端)ID和目录(租户)ID。单击证书和机密。复制指纹。输入以下PowerShell,用您的信息替换ClientId、TenantId、CertThumbprint、地址和UserId。
$ClientId=‘65bf8b60–3552–4621-ab36–9b6e7072093e’$TenantId=‘d01acbb1-ad7d-48bc-b82d-7597ca77ca95’$CertThumbprint=‘1F4B63E994D8513DE582A50B327A52F2C90C7551’$Message=@{subject=“HelloWorld!”;toRecipients=@(@{emailAddress=@{address=“admin@gruber18.onmicrosoft.com”;}});body=@{contentType=“text”;content=“Thisismytestemail.”}}Connect-MgGraph-ClientId$ClientId-TenantId$TenantId-CertificateThumbprint$CertThumbprintSelect-MgProfile-Namev1.0Send-MgUserMail-UserId“John@gruber18.onmicrosoft.com”-Message$Message