【问题标题】:Schedule.Service erroring out while connecting to localhost连接到 localhost 时 Schedule.Service 出错
【发布时间】:2018-07-26 09:45:09
【问题描述】:

我有一个连接到服务器列表的 PowerShell 脚本,并查询计划的任务。 (类似于https://community.spiceworks.com/scripts/show_download/2094-get-scheduled-tasks-from-a-computer-remote-or-local)它曾经在Windows 2008R2 服务器上运行良好。但是,在新的 Windows Server 2012 R2 服务器上,出现以下错误。奇怪的是它只在连接到本地机器时发生,远程服务器没有错误。并且在使用管理权限在我的帐户下运行时不会引发任何错误。

https://www.powershellmagazine.com/2015/04/10/pstip-retrieve-scheduled-tasks-using-schedule-service-comobject/

这篇文章说

不幸的是,与使用此 COMObject 的 Get-ScheduledTask cmdlet 不同,它需要具有管理凭据的提升的 PowerShell 控制台。

但该脚本过去在 Windows Server 2008 R2 服务器上运行良好。

是否可以进行调整以使脚本在 2012 R2 服务器上运行?

使用“1”参数调用“连接”的异常:“访问被拒绝。(异常 从 HRESULT: 0x80070005 (E_ACCESSDENIED))" 在 C:\scripts\CheckSchedulers\CheckSchedulers.ps1:20 char:10 + ($TaskScheduler = New-Object -ComObject Schedule.Service).Connect($curSe ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation

错误是由我的代码引发的,使用 spiceworks 的代码,它是可重现的。

【问题讨论】:

  • 有关您的代码的帮助:显示 your.code。
  • 只用一行就可以观察到错误 ($TaskScheduler = New-Object -ComObject Schedule.Service).Connect($servername) 在 2008r2 服务器上运行正常,而不是在 2012r2 服务器上运行。

标签: powershell scheduled-tasks


【解决方案1】:

您正在创建一个Schedule.Service 对象,将其分配给一个变量,然后尝试对该分配的结果调用Connect() 方法。我不希望这适用于任何 Windows 或 PowerShell 版本,如果它适用于 Server 2008 R2,那很可能只是偶然的。

您需要在变量中使用Schedule.Service 对象(因为其他操作也需要它),并且您必须在该对象上调用Connect() ,所以您需要分两步完成:

$TaskScheduler = New-Object -ComObject 'Schedule.Service'
$TaskScheduler.Connect($servername)  # connect to remote Task Scheduler

如果您在循环中连接到不同的服务器,您可以重复使用该对象,只需 Connect() 到下一个服务器。

要连接到本地任务计划程序服务,只需删除 $servername 并调用不带参数的方法:

$TaskScheduler.Connect()  # connect to local Task Scheduler

【讨论】:

  • i.imgur.com/yHBqmK3.png 这是一个屏幕截图,我尝试了你的建议,但连接到 localhost 时仍然出错。
  • 连接到本地服务使用Connect(),不带参数。
  • 谢谢。效果很好。 i.imgur.com/RwrP2ZG.png 知道为什么查询“Adobe Acrobat 更新任务”没问题,但“Adobe Flash Player NPAPI 通知程序”会引发异常吗?
  • 您收到“权限被拒绝”错误,因此我怀疑该任务的权限不会授予您的用户访问权限。检查C:\Windows\system32\Tasks中相应文件的权限。
猜你喜欢
  • 2020-04-04
  • 2019-03-17
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 2015-03-14
  • 2012-12-14
  • 2018-10-28
  • 2020-03-13
相关资源
最近更新 更多