通过 Exchange Server 从 PowerShell 发送电子邮件
如果您想了解如何从 PowerShell 发送电子邮件,那么您来对地方了。
许多管理员和用户设置了他们必须一次又一次写入的预定义消息。
另请阅读:用于运行 PowerShell 脚本和电子邮件警报的任务计划程序
他们不会一次又一次地编写消息,而是将其保存为模板并进行一些细微的更改,然后发送电子邮件。
同样,如果您必须发送某种用户活动的每日报告。
发送消息的最快方法是使用 PowerShell。
您可以保存预定义的消息,进行必要的更改,然后将其粘贴到 PowerShell 中以发送电子邮件。
但是,您可以将代码保存为脚本并运行相同的脚本以每天发送消息。
即使有帮助电源外壳,您也可以发送带有附件的电子邮件。
因此,在本文中,我们将学习如何通过 PowerShell 发送简单的电子邮件。
因此,我们还将了解如何生成 csv 报告并发送带有附件的电子邮件。
如何使用 PowerShell 发送不带附件的电子邮件
在通过 PowerShell 发送电子邮件之前,请确保您的组织中正在运行电子邮件服务,例如 Exchange Server 或支持该功能的任何其他电子邮件平台。
在我们的例子中,我们有微软交换2019在组织中运行。
所以,在帮助下交换,我们将使用 PowerShell 发送电子邮件。
但是,我们需要一个简单的代码来发送不带附件的电子邮件。
根据您的详细信息设置以下代码的格式
$sendMailMessageSplat = @{
From = 'Administrator <[email protected]>'
To = 'Jack <[email protected]>'
Subject = 'Test mail'
Body = 'Pls find the user daily report'
smtpServer = 'mail.techijack.net'
}
Send-MailMessage @sendMailMessageSplat
您可以更改“发件人、收件人、主题、正文和 SmtpServer”
确保输入有效的电子邮件地址和 SMTP 服务器

执行上述代码后,我们会在用户 Jack 的收件箱中收到一封电子邮件,如下所示


至此,我们已经成功使用 PowerShell 发送了一封电子邮件。
如何从 PowerShell 发送带有附件的电子邮件
发送带有附件的电子邮件有点棘手。
这里我们将使用脚本首先创建一个报告文件夹里面的C盘
因此,我们将按照报告名称和当前日期生成所有用户上次登录活动的 CSV 报告。
最后,我们将生成的报告附加在电子邮件中并发送给用户 jack。
为此,我们将使用下面的脚本
$Date = Get-Date -Format "yyyy-MM-dd"
$ReportFolder = "C:Reports"
if (!(Test-Path $ReportFolder)) {
New-Item -ItemType Directory -Path $ReportFolder
}
$ReportFile = "$ReportFolderDailyReport_$Date.csv"
# Export AD Users
$Users = Get-ADUser -Filter * -Property SamAccountName, DisplayName, Enabled, LastLogonDate
$Users | Export-Csv $ReportFile -NoTypeInformation -Encoding UTF8
# Send Email with Report Attachment
$sendMailMessageSplat = @{
From = 'Administrator <[email protected]>'
To = 'Jack <[email protected]>'
Subject = 'Daily User Report'
Body = 'Please find the attached user daily report.'
SmtpServer = 'mail.techijack.net'
Attachments = $ReportFile
}
Send-MailMessage @sendMailMessageSplat
您可以根据您的设置设置报告路径、电子邮件地址和 SMTP 服务器。
您可以测试此代码,如果有效,请将其另存为“DailyReport.ps1”脚本文件。
在我们的例子中,我们将此脚本文件保存在 C 驱动器中。
我们将运行下面的脚本
c:dailyReport.ps1


脚本成功运行后,将发送一封电子邮件以及报告附件。


我们的 CSV 报告文件将如下所示


因此,通过这种方式,您可以将每日报告作为电子邮件中的附件发送。
自动化的考虑
如果这是一项日常任务,获取组织中所有用户的上次登录信息。
您可以尝试在任务计划程序的帮助下自动化该过程并每天运行该任务。
因此,它会在给定的时间间隔内运行相同的脚本,并且自动地,您将在每天的固定时间获得每日报告。
结论
自动报告使您的管理工作更加轻松。
管理员应使用多个脚本生成 CSV 或 HTML 格式的报告。
使用 PowerShell 运行脚本并将报告作为附件发送给责任方。
因此,为了实现自动化,您可以安排任务在特定时间运行特定脚本以获取电子邮件警报。
如果对本文有任何疑问,请随时联系 Techi Jack
我希望您还会喜欢有关 Exchange Server 的其他一些教程
此外,如果您想观看通过 PowerShell 脚本发送电子邮件的视频,请观看下面的视频。
