【发布时间】:2012-07-16 06:12:11
【问题描述】:
当我手动运行 PowerSheel 脚本时 - 通过一个使用 PowerShell 解释器执行它的 .bat 文件 - 它正确执行 SQL 查询并创建一个 Excel 文件并通过电子邮件发送它。
如果我将其自动化 - 每晚通过 Windows 作业调度程序运行 .bat 文件,该文件使用解释器运行 PowerShell 文件 - 然后发送的电子邮件不包含该文件。
这里的代码很难复制,因为我做了一个很好的框架,里面有很多函数,里面有 lambda 函数等等,但一般来说:
$ExcelWorkBook.SaveAs($Filename)
$ExcelWorkBook.Close()
$ExcelApp.Quit()
(...)
睡眠 - 500 秒
(...)
$MailMessage.Attachments.Add($Filename)
$SMTP.Send($MailMessage)
我听说 Excel 实际上并不支持无 GUI 自动化(Windows 任务计划程序),但它实际上通过不同的框架为我工作。
如果不能,我该怎么做才能使它工作,我如何以不同的方式从 PowerShell 生成 Excel 文件,或者如何在 PowerShell 中轻松生成报告并通过电子邮件发送报告?
【问题讨论】:
-
您真的需要 Excel 文件吗?您能为您的报告制作一个更简单的 CSV 文件吗?
-
逐步调试您的设置。首先,将任务设置为仅发送电子邮件。如果有效,请添加附件。如果它有效,那么电子邮件部分就可以了。将任务设置为创建一个没有 SQL 的简单 Excel 文档并将其保存到某个目录。如果可行,请尝试通过电子邮件发送。通过这种方式,您应该能够找出流程的哪一部分出了问题:Excel、Sql、Mail 或完全不同的东西。
标签: windows excel powershell scheduled-tasks task