我是 Windows Server 的新手,所以我不确定我是否做错了什么,或者服务器是否有问题。
我来自 Linux 背景,我想做一些类似于 cronjob 的东西。在 Windows Server 中,这似乎是由任务计划程序执行的。我创建了一个简单的 .ps1 脚本,将在 XX:YY 时间执行,并在我登录时执行。
Get-Date | Out-File C:\tmp\debug\debug.txt -Append
测试后,历史日志显示“Warning ..... 325 ... queued ... XXXXXX”。我已经用谷歌搜索了一个解决方案,但谷歌告诉我的唯一一件事就是让它并行运行,以防进程的现有实例已经在运行。我已经尝试了所有这些,但它仍然将脚本放入队列中。这个队列似乎没有被处理。
我将不胜感激任何帮助。
听起来您可能已经有一些任务实例排队,没有配置超时,并且脚本中没有终止来处理潜在的错误。
我建议通过结束任务的任何现有实例来从任务计划程序中的全新状态开始。右键单击它并选择“结束”。如果有许多实例排队,您可能需要多次执行此操作。
您可以在计划任务的属性中进行一些调整,以帮助它保持移动。
打开任务属性对话框并转到设置选项卡:
在任务属性对话框中,转到条件选项卡:
在任务属性对话框中,滚动历史选项卡以查看是否记录了除“排队”状态之外的任何状态。他们可能会提供一些关于正在发生的事情的见解。
综上所述,这只会帮助您运行更多的任务实例,但不能解决为什么任务没有自行完成的原因。在这些情况下,将逐步日志记录添加到您的 PowerShell 脚本中会非常有帮助,这样您就可以深入了解该脚本在事情挂断之前的进展情况。我怀疑你会发现脚本没有完成,这导致计划任务永远不会完成,并且任务的下一个实例永远不会启动。日志记录可以揭示发生这种情况的位置,因为有时手动运行脚本并不是对任务调度程序运行脚本时发生的情况的完美测试。
正如您更新的问题所指出的那样,您只是发送一个简单的命令,因此从长远来看,日志记录可能不是很有帮助,但仍可能揭示实际错误是什么。(尝试使用内置的 $error 变量。)如果您以不同于您正在测试的帐户运行脚本,则可能是权限错误。
最后,尝试在脚本末尾添加“Exit 0”行,看看这是否有助于任务计划程序知道脚本已成功结束。
我不认为这样的脚本会被排队(它这么短需要一毫秒才能运行)。它更有可能是其他东西在这里发挥作用。尝试手动运行,可能是您的脚本不允许运行,未签名:https://go.microsoft.com/fwlink/?LinkID=135170
还要注意哪个帐户有权执行,尤其是在您允许的情况下,它应该针对您允许的帐户。