【问题标题】:PowerShell script not properly e-mailing Excel report file when ran automatically in the scheduler在调度程序中自动运行时,PowerShell 脚本无法正确通过电子邮件发送 Excel 报告文件
【发布时间】: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


【解决方案1】:

如果您运行的是 Windows 2008 或更高版本,则作业可能在 session0 中执行(请参阅 microsoft 中有关 session0 隔离的信息)。

您必须为 session0 创建桌面文件夹,在此处阅读更多信息: http://social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91

Windows 2008 服务器 x64 请制作这个文件夹 C:\Windows\SysWOW64\config\systemprofile\Desktop

Windows 2008 服务器 x86 请制作这个文件夹 C:\Windows\System32\config\systemprofile\Desktop

然后重启机器再试一次。 我通过任务计划程序和 powershell 使用无 GUI 的 Excel 自动化,通过创建这些文件夹来完成。

【讨论】:

    【解决方案2】:

    @Dan 是的,我愿意。 CSV 对于企业报告来说是一种非常糟糕的报告格式,没有颜色,没有格式,什么都没有。经理在他的收件箱中发现它会受到侮辱。

    @VonPryz - 但手动它可以工作!所以你说调试调度?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 2020-04-29
      • 2015-10-22
      • 2017-05-05
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多