PowerShell 脚本无法与任务计划程序和 Outlook 一起使用

问题描述 投票:0回答:2

我多年来一直使用 PowerShell 脚本从 Outlook 下载 Excel 工作表并将其保存到文件夹中。该脚本已使用任务计划程序进行计划,并且直到最近都完美运行。

我最近更改了 Active Directory (AD) 帐户密码并在任务计划程序作业中更新了它。但是,任务现在完成时出现错误,但现在不下载任何文件。这是错误消息:

You cannot call a method on a null-valued expression.
At C:\PS\Process_Mailbox.ps1:66 char:1
+ $Inbox = $Namespace.Folders.Item("$MailboxName").Folders.Item("Inbox" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression.
At C:\PS\Process_Mailbox_RBL.ps1:67 char:1
+ $Archive = $Namespace.Folders.Item("$MailboxName").Folders.Item("$Mai ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

奇怪的是,当我手动执行该脚本时,该脚本运行得很好,但是当通过任务计划程序作为计划任务运行时,它会遇到问题。

我已检查用户权限、Outlook 配置文件和任务计划程序设置,但我似乎无法找出导致问题的原因。 看来我的 PowerShell 脚本仅在通过任务计划程序作为计划任务运行时才会遇到问题,特别是与其与 Outlook 的交互相关。

还有其他人在通过任务计划程序使用 Outlook 运行 PowerShell 脚本时遇到过类似的问题吗?任何有关如何解决此问题的见解或建议将不胜感激。

谢谢您的帮助!

powershell outlook scheduled-tasks windows-task-scheduler office-automation
2个回答
0
投票

Microsoft 针对 Office 应用程序自动化声明如下:

Microsoft Office 的所有当前版本均经过设计、测试和配置,以作为最终用户产品在客户端工作站上运行。他们采用交互式桌面和用户配置文件。它们不提供满足旨在无人值守运行的服务器端组件的需求所需的可重入性或安全性级别。

Microsoft 目前不建议也不支持从任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)实现 Microsoft Office 应用程序的自动化,因为 Office 可能会表现出不稳定的行为,并且/或在这种环境下运行 Office 时出现死锁。

如果您正在构建在服务器端上下文中运行的解决方案,则应尝试使用可安全执行无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺乏许多成功运行所需的功能。此外,您还将面临整体解决方案稳定性的风险。

Office 服务器端自动化注意事项文章中了解更多相关信息。

作为一种可能的解决方法,您可以考虑使用 Outlook 所基于的低级 API(扩展 MAPI),或任何其他第三方包装器(例如 Redemption)来处理来自服务或任务计划程序的 Outlook 数据。还可以考虑使用 EWS 或 Graph API 来执行此类任务,因为也可以从后端检索所需的数据。


0
投票

我尝试修复权限、修复 Office、更改任务计划程序中的参数、提供 powershell.exe 的完整路径,但对我没有任何作用。

最后我意识到这是一个简单的修复 - 我删除了任务计划程序作业并使用不同的名称再次创建它,并且它像以前一样工作:)

© www.soinside.com 2019 - 2024. All rights reserved.