Windows 在计划程序中自动运行时,PowerShell脚本未正确通过电子邮件发送Excel报告文件

Windows 在计划程序中自动运行时,PowerShell脚本未正确通过电子邮件发送Excel报告文件,windows,excel,powershell,scheduled-tasks,task,Windows,Excel,Powershell,Scheduled Tasks,Task,当我手动运行PowerShell脚本时(通过使用PowerShell解释器执行它的.bat文件),它会正确执行SQL查询并创建Excel文件并通过电子邮件发送 如果我将其自动化—每晚通过Windows作业调度器运行带解释器的.bat文件—则发送电子邮件时不带该文件 在这里复制代码很困难,因为我用lambda函数和所有函数制作了一个很好的框架许多函数,但通常: $ExcelWorkBook.SaveAs($Filename) $ExcelWorkBook.Close() $ExcelApp.Qui

当我手动运行PowerShell脚本时(通过使用PowerShell解释器执行它的.bat文件),它会正确执行SQL查询并创建Excel文件并通过电子邮件发送

如果我将其自动化—每晚通过Windows作业调度器运行带解释器的.bat文件—则发送电子邮件时不带该文件

在这里复制代码很困难,因为我用lambda函数和所有函数制作了一个很好的框架许多函数,但通常:

$ExcelWorkBook.SaveAs($Filename)

$ExcelWorkBook.Close()

$ExcelApp.Quit()

(……)

睡眠-500秒

(……)

$MailMessage.Attachments.Add($Filename)

$SMTP.Send($MailMessage)

我听说Excel实际上不支持GUI较少的自动化(windows任务调度器),但这实际上通过一个不同的框架对我有效


如果无法从PowerShell以不同的方式生成Excel文件,或者如何在PowerShell中轻松生成和发送电子邮件报告,我可以如何使其正常工作?

@Dan是的,我可以。CSV对于公司报告来说是一种非常糟糕的报告格式,没有颜色,没有格式,什么都没有。如果经理在收件箱中发现这一点,他会受到侮辱


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

如果您运行的是windows 2008或更高版本,那么作业可能在session0中执行(请阅读microsoft的session0隔离)

您必须为会话0创建桌面文件夹,请在此处阅读更多内容:

Windows 2008服务器x64 请创建此文件夹 C:\Windows\SysWOW64\config\systemprofile\Desktop

Windows 2008服务器x86 请创建此文件夹 C:\Windows\System32\config\systemprofile\Desktop

然后重新启动计算机并重试。
我通过任务调度器和powershell实现了无GUI的Excel自动化,通过创建这些文件夹来实现。

您真的需要Excel文件吗?你能为你的报告制作一个更简单的CSV文件吗?一步一步地调试你的设置。首先,将任务设置为仅发送电子邮件。如果有效,请添加附件。如果有效,那么电子邮件部分就可以了。将任务设置为创建不带SQL的简单Excel文档,并将其保存到某个目录。如果有效,试着发电子邮件。通过这种方式,您应该能够发现流程的哪一部分出现了问题:Excel、Sql、Mail或完全不同的东西。