【发布时间】:2015-02-27 09:54:41
【问题描述】:
我正在尝试让一个相当长的 Powershell 脚本作为计划任务运行。当我从 Powershell ISE 运行该脚本时,它运行完美,但如果我只是从计划任务中调用它,它就无法正常工作,除非我指定 -noexit。所以我有一个批处理包装器脚本,我使用我的计划任务调用它,并指定了 -noexit 并且工作正常。但是,我每 20 分钟调用一次,所以我最终得到了一个非常大的 Powershell 会话进程。计划任务也因此永远不会结束。本质上,该脚本会检查是否存在带有特定标签的 USB 磁盘,如果存在,我会将一些文件复制到其中。
我的问题是,因为我正在使用 -noexit,Powershell 会话会继续运行,并且当我每 20 分钟调用一次脚本时,它们会累积起来。一旦我的 Powershell 脚本完成了它的工作,我需要一种方法来终止 Powershell 会话。我尝试在批处理文件的最后一行使用 exit,但它不会终止 Powershell 会话。
如何在我的 Powershell 脚本完成运行后终止使用 -noexit 调用的 Powershell 会话?
另一种可能解决此问题的方法是确定为什么 Powershell 脚本在调用时没有 -noexit 无法正常运行,但在从 Powershell ISE 调用时运行正常(它只是在 powershell 会话中直接运行脚本) - 这也工作正常。
我看过使用 -command 而不是 -file,我看过不同的包装方法。我尝试过使用 new-pssession 和 remove-pssession。
该脚本中有许多 if else 语句,我发现如果我从没有 -noexit 的命令提示符运行它是 if 部分运行但 else 部分永远不会运行 - 即使条件正确让它运行其他部分。就像我说的那样,在 powershell 会话中工作正常。很烦人...
这让我发疯了,所以任何建议都将不胜感激。
谢谢
【问题讨论】:
-
如果您需要帮助确定问题,您需要发布您的脚本。或者按照建议杀死它。
标签: session powershell scheduled-tasks wrapper