Powershell - 我的脚本不需要退出,但是完成后如何终止 powershell 实例

Powershell -noexit needed for my script but how do I kill the powershell instance when done

我正在尝试将一个相当长的 Powershell 脚本作为计划任务发送到 运行。当我从 Powershell ISE 中 运行 时,脚本 运行 非常完美,但如果我只是从计划任务中调用它,它就不能正常工作,除非我指定 -noexit。所以我有一个批处理包装器脚本,我使用我的计划任务调用它并指定了 -noexit 并且工作正常。但是,我每 20 分钟调用一次,所以我最终得到了一个非常大的 Powershell 会话进程。因此,计划任务也永远不会结束。本质上,该脚本检查是否存在带有特定标签的 USB 磁盘,如果存在,我将一些文件复制到其中。

我的问题是,因为我使用的是 -noexit,Powershell 会话保持 运行ning 并且当我每 20 分钟调用一次脚本时,它们会累积。一旦我的 Powershell 脚本完成它的工作,我需要一种方法来终止 Powershell 会话。我尝试在我的批处理文件的最后一行使用 exit 但它不会终止 Powershell 会话。

如何在我的 Powershell 脚本完成 运行ning 后终止使用 -noexit 调用的 Powershell 会话?

可能解决此问题的另一种方法是确定为什么 Powershell 脚本在调用时没有 -noexit 时不能 运行 正确,但从 Powershell ISE 调用时 运行 没问题(这只是 运行直接在 powershell 会话中使用脚本)- 也可以正常工作。

我研究过使用 -command 而不是 -file,我研究过不同的包装方法。我试过使用 new-pssession 和 remove-pssession。

脚本中有许多 if else 语句,我发现如果我 运行 从没有 -noexit 的命令提示符是 if 部分 运行s 但 else部分永远不会 运行 - 即使条件适合 运行 else 部分。就像我说的那样,在 powershell 会话中工作正常。很烦人...

这让我发疯所以任何建议将不胜感激。

谢谢

使用:Stop-Process $pid 或脚本末尾的 kill $pid。它会杀死电源 shell 实例。