Bil*_*ore 3 powershell powershell-ise
假设我已经使用 Powershell ISE 一段时间了,我的环境空间开始变脏,我需要重新启动交互式 shell...我不想关闭编辑器并重新打开它。如何重新启动 powershell ISE 交互式 shell 以清除所有变量,而无需关闭并重新打开 Powershell ISE?
首先,强制性通知:
PowerShell ISE不再积极开发,并且有理由不使用它(底部),特别是无法运行PowerShell (Core) 6+。
积极开发的编辑器是Visual Studio Code及其PowerShell 扩展,它可以跨 PowerShell 版本和平台提供最佳的 PowerShell 开发体验。
离子选择:
科林的有用答案是一个务实的解决方案:打开一个新选项卡并关闭旧选项卡。
但是,新会话始终保留旧会话的环境变量,因为 ISE在进程内托管 PowerShell SDK ,而不是powershell.exe
作为子进程运行。
因此,要在当前选项卡中重新启动会话,您必须指示托管System.Management.Automation.PowerShell
实例放弃其当前的运行空间并创建一个新的运行空间 - 我不知道有什么方法可以做到这一点。
然而,即使有可能,环境变量(存在于运行 ISE 的进程级别)也将被保留。
视觉工作室代码:
可以在当前选项卡中启动新会话,并且无需 继承旧会话的环境变量:
当运行的集成终端正在运行PowerShell 扩展附带的 PowerShell 集成控制台(相当于 ISE 中的控制台窗格)时,您可以通过单击终端工具栏中的垃圾桶图标来终止当前实例面板如下图所示。
执行此操作后,系统会提示您启动一个新会话,该会话在新powershell.exe
/pwsh
子进程中运行。
或者 - 并且最好-您可以将 PowerShell 扩展配置为在启动新的调试会话时自动启动新会话,如zett42指出的:
或者:打开“设置”( Ctrl-,) 视图,搜索powershell temporary
并打开该PowerShell > Debugging: Create Temporary Integrated Console
设置。
或者:"powershell.debugging.createTemporaryIntegratedConsole": true
直接添加到您的settings.json
文件中。
这会自动为每个调试会话启动一个新的临时 PowerShell 集成控制台,该控制台将保持打开状态,直到您启动下一个调试会话,此时新的临时控制台将替换旧的控制台。
2022.11.0
,您无法exit
退出 PowerShell 集成控制台,但您可以使用垃圾桶图标或在需要时终止它,在临时Stop-Process -Id $PID
控制台的情况下(值得称赞的是)不会提示您重新启动它; 相反,下一个调试会话将根据需要创建一个新的临时控制台。此配置避免了始终困扰 ISE 的主要陷阱(并且可能部分是引发问题的原因)以及 PowerShell 扩展的默认配置:
在那里,代码以点源方式运行,即直接在同一会话的顶级范围中运行,因此早期调试运行留下的状态可能会干扰后续调试运行;例如,创建一个包含内容的脚本(++$i)
并重复运行它 - 您会看到$i
每次运行都会增加。
为每次调试运行启动新会话可以避免此问题。
归档时间: |
|
查看次数: |
2808 次 |
最近记录: |