excel - 捕获 Excel 消息并通过电子邮件发送
问题描述
从这篇文章开始 如何在 Powershell 中捕获 Excel 文件的宏错误?
每次脚本在特定步骤运行时出现异常时,我都需要一些帮助才能让 PowerShell 向我发送电子邮件。
这是我当前脚本的代码。
app = New-Object -comobject Excel.Application
$app.Visible = $False
$app.DisplayAlerts = $False
$wb = $app.Workbooks.Open("\\IESWDBMSFSP001\SHARED02\Technical_Training\PUBLIC\REPORT\USER_FEED\LMS_USERS_QUERY.xlsx")
$wb.Name
$wb.RefreshAll()
$wb.Save()
$wb.Close()
$app.Quit()
关键部分是$wb.RefreshAll()
,由于源数据已损坏,它有时会失败。
理想情况下,当仅执行此命令引发异常时,我想从 PowerShell 触发一封带有固定主题$wb.RefreshAll()
“错误用户查询”的非常基本的电子邮件。
我会使用这个代码的一个稍微修改过的版本来发送电子邮件,所以这部分我很好。 https://gallery.technet.microsoft.com/scriptcenter/Send-HTML-Email-Powershell-6653235c
我不知道并且需要帮助的是如何触发电子邮件,我想我需要一个 if 语句:“IF 异常,发送电子邮件,ELSE 关闭并保存”
解决方案
您正在寻找的构造称为try
/catch
:
try {
$wb.RefreshAll()
$wb.Save()
} catch {
$msg = $_.Exception.Message
Send-MailMessage ... -Body $msg
}
$wb.Close($false)
$app.Quit()
RefreshAll()
这将捕获由(and ) 引发的异常(准确地说是终止错误Save()
),并将发送带有错误消息的邮件。
推荐阅读
- react-native - 如何在 React Native (Expo) 中添加应用内浏览器
- typescript - 加载模块未捕获的引用错误:未定义 SystemJS
- java - 在java中我如何转义*字符
- amazon-s3 - 加载存储在 s3 中的 hive 表中的数据,其位置存储在另一个静态 s3 位置
- f# - F# 中 EF C# ToListAsync 的等价物是什么?
- c - 如何使用指针数组反转字符串?
- tfs - 在 TFS 管道中使用 gMSA 帐户
- jqxgrid - jqxgrid 打印格式和缺少列
- java - Java 11 的 Nashorn 替代方案
- java - Java方法覆盖equals方法