Powershell ISE-空行上的Ctrl-C终止正在执行的脚本?

Powershell ISE-空行上的Ctrl-C终止正在执行的脚本?,powershell,powershell-ise,sigterm,Powershell,Powershell Ise,Sigterm,早些时候,我在ISE中启动了一个长时间运行的脚本,并在它运行时开始了第二个脚本的工作,在控制台面板上关注它的进度。我正在将一个函数调用复制到第二个脚本的另一部分,这时我键入并按下Ctrl-C而不是Ctrl-V。执行脚本立即退出。似乎ISE将其解释为运行脚本的SIGTERM,即使我没有突出显示控制台面板。 我看不到任何禁用此功能的选项,但如果这是预期的行为,那么我发现它是不可接受的。我需要找到一种方法来关闭它,因为我已经失去了大约一个小时的工作(脚本必须从头到尾运行)通过一个意外的点击,应该没有做

早些时候,我在ISE中启动了一个长时间运行的脚本,并在它运行时开始了第二个脚本的工作,在控制台面板上关注它的进度。我正在将一个函数调用复制到第二个脚本的另一部分,这时我键入并按下Ctrl-C而不是Ctrl-V。执行脚本立即退出。似乎ISE将其解释为运行脚本的SIGTERM,即使我没有突出显示控制台面板。

我看不到任何禁用此功能的选项,但如果这是预期的行为,那么我发现它是不可接受的。我需要找到一种方法来关闭它,因为我已经失去了大约一个小时的工作(脚本必须从头到尾运行)通过一个意外的点击,应该没有做任何事情。有人知道这是故意的行为,还是我遇到了其他问题吗?

解决方法:
文件
新建PowerShell选项卡

这将创建一个新的环境,它的额外好处是允许您独立于第一个脚本运行第二个脚本

<>但是你可能会认为ISE更适合脚本的开发和测试,而不是长时间运行的“生产”过程,而你也在开发其他脚本。我的意思是你可以使用它,但它可能被认为是一个边缘用例

你提到:

创建新选项卡确实有效,但这意味着我无法一眼看到当前正在执行的脚本


在这种情况下,您可以打开一个新的控制台主机(
powershell.exe
)并在ISE之外运行脚本(同时继续开发脚本并将其保存在ISE中)。但是,除非你能把它移到另一个显示器上,否则可能还是很难看到。尽管如此,您也可以打开一个全新的ISE实例

解决方法:
文件
新建PowerShell选项卡

这将创建一个新的环境,它的额外好处是允许您独立于第一个脚本运行第二个脚本

<>但是你可能会认为ISE更适合脚本的开发和测试,而不是长时间运行的“生产”过程,而你也在开发其他脚本。我的意思是你可以使用它,但它可能被认为是一个边缘用例

你提到:

创建新选项卡确实有效,但这意味着我无法一眼看到当前正在执行的脚本


在这种情况下,您可以打开一个新的控制台主机(
powershell.exe
)并在ISE之外运行脚本(同时继续开发脚本并将其保存在ISE中)。但是,除非你能把它移到另一个显示器上,否则可能还是很难看到。尽管如此,您也可以打开一个全新的ISE实例

谢谢,这似乎是一个有效的解决办法。问题是,我仍在开发长时间运行的脚本,这就是为什么我当时在ISE中运行它。在生产中,此脚本将在构建服务器上无头运行。创建新选项卡确实有效,但这意味着我无法一眼看到当前正在执行的脚本。在我看来,让Ctrl-C在编辑器窗口中这样做是一个愚蠢的设计决定。这两个观点都是正确的。我只希望有一个简单的选项来说‘不要这样做’。@Gargravarr不幸的是,我认为没有。从理论上讲,ISE的更新和修复会更加频繁,而且不会与主要的PowerShell版本发布绑定,但自1月份发布以来,还没有其他版本。谢谢,这似乎是一个有效的解决方法。问题是,我仍在开发长时间运行的脚本,这就是为什么我当时在ISE中运行它。在生产中,此脚本将在构建服务器上无头运行。创建新选项卡确实有效,但这意味着我无法一眼看到当前正在执行的脚本。在我看来,让Ctrl-C在编辑器窗口中这样做是一个愚蠢的设计决定。这两个观点都是正确的。我只希望有一个简单的选项来说‘不要这样做’。@Gargravarr不幸的是,我认为没有。从理论上讲,ISE的更新和修复更加频繁,与主要的PowerShell版本无关,但自1月份发布以来,还没有其他版本。要避免在不确定要单击哪个按钮时使用0,5秒来验证按钮,需要做大量工作。:-)这完全是出于设计。当您不选择文本时,CTRL+C将中止脚本,就像在普通控制台中一样。如果您运行的是长脚本,我建议使用单独的powershell控制台/ISE。@FrodeF。如果选择了控制台面板,我将不会遇到Ctrl-C中止脚本的问题。在本例中,我没有-光标在文本编辑器面板中。Ctrl-C不应该被传递到控制台。滑到C而不是V有多容易?这些打字错误应该是无害的。正如我在下面向briantist解释的,我仍在编写这个长时间运行的脚本,因此在ISE中运行它。ISE是为开发而设计的,PowerShell控制台是为执行而设计的。在开发过程中,您使用脚本窗格作为控制台,因此在不选择文本的情况下在CTRL+C上取消它是至关重要的。如果我必须点击控制台,我可能不会再使用ISE进行开发了。或者,如果可能的话,我会尝试用ISE插件覆盖热键。另一方面,MS计划使PowerShell ISE支持更多扩展(从ISE预览开始),因此可能会添加此选项来修改此选项。在uservoiceWow上发布。要避免在不确定要单击哪个按钮时使用0,5秒来验证按钮,需要做大量工作。:-)这完全是出于设计。当您不选择文本时,CTRL+C将中止脚本,就像在普通控制台中一样。如果您运行的是长脚本,我建议使用单独的powershell控制台/ISE。@FrodeF。如果选择了控制台面板,我将不会遇到Ctrl-C中止脚本的问题。在这种情况下,我会