gpt4 book ai didi

power-shell 脚本的 Windows 调度不可靠

转载 作者:可可西里 更新时间:2023-11-01 10:41:48 24 4
gpt4 key购买 nike

我每天都在尝试运行自动 powershell 脚本。但是我在让它持续可靠地运行时遇到了问题,脚本本身运行良好,它正在让 Windows 调度程序持续运行它,这就是问题所在。

Windows 调度程序每天凌晨 1 点以 powershell.exe 的形式使用命令参数调用该脚本:

-windowstyle Normal  -NoExit -file "d:\work\PwrShellScripts\FlmToDb_010.ps1"

一旦被调用,脚本会一直运行到晚上 11 点,然后退出。

脚本本身运行可靠,但调度仅在十分之九的情况下运行,偶尔会因错误而失败:

Task Scheduler did not launch task "\DailyFlm" because instance "{aa18e048-d8b2-4e16-8737-fc7babbb609e}" of the same task is already running.

问题是,如何让脚本每天可靠运行?

其他可能相关的信息......

参数 -windowstyle Normal -NoExit 表示 powershell 脚本在命令窗口中运行(而不是作为后台进程),如果 session 结束,窗口将保持打开状态。

这样做有两个原因,首先,它提供了进程实际运行的视觉指示,其次,如果进程失败,它允许检查错误消息。 powershell 脚本不包含任何文件日志记录,因此在命令提示符下运行它还可以让我确认前几天 session 在停止时是否干净退出。

其中一个问题是,因为该过程在 90% 的时间内都有效,所以如果我进行任何调整,我必须等待 10 天或更长时间才能确认它们是否真的有效!

我怀疑这个问题可能与脚本退出时控制台保持打开状态 (-NoExit) 有关。大多数情况下,Windows 似乎可以识别出虽然控制台仍处于打开状态,但关联的脚本已经退出。

我的猜测是,它偶尔会决定,因为控制台是打开的,所以进程仍在运行。我无法发现日程安排正常和不正常的情况之间有什么区别。

有什么建议吗?

更新...调度程序平均每 10 天启动一次作业失败。我更愿意让脚本在前台运行,这样可以更轻松地监控它的进度,并且如果它确实失败了,它会变得非常明显。

最佳答案

the same task is already running.

脚本在运行时可能会做它应该做的事情,但有一个缺陷……它没有正确关闭。这正是您所说的 -NoExit 问题。当您运行 powershell 任务时,进程名称是 powershell.exe,带有关联的进程 ID,这就是任务调度程序知道它是否完成的方式。

要解决此问题,我建议编写一个脚本来终止所有 powershell.exe 进程,并安排它在每天凌晨 12:55 运行。

关于power-shell 脚本的 Windows 调度不可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50757186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com