【问题标题】:Powershell IDE: How to restart interactive shell to clear all variables without leaving Powershell ISE?Powershell IDE:如何在不离开 Powershell ISE 的情况下重新启动交互式 shell 以清除所有变量?
【发布时间】:2020-12-03 17:26:02
【问题描述】:

假设我已经使用 Powershell ISE 一段时间了,我的环境空间开始变脏,我需要重新启动交互式 shell...我不想关闭我的编辑器并重新打开它。如何在不关闭并重新打开Powershell ISE的情况下重新启动powershell ISE交互式shell以清除所有变量?

【问题讨论】:

标签: powershell powershell-ise


【解决方案1】:

首先,强制性通知:PowerShell ISE 是 no longer actively developedthere are reasons not to use it(底部),特别是无法运行 PowerShell [Core] 6+。提供跨平台最佳 PowerShell 开发体验的积极开发的编辑器是Visual Studio Code,结合了它的PowerShell extension


ISE

Colin's helpful answer 是一个实用的解决方案:打开一个新标签并关闭旧标签。

但是,新会话总是保留旧会话的环境变量,因为 ISE 托管 PowerShell SDK进程中,而不是将 powershell.exe 作为子进程

要在 current 选项卡中重新启动会话,您必须指示托管的 System.Management.Automation.PowerShell 实例放弃其当前运行空间并创建一个新运行空间 - 我不知道有什么方法这样做。

但是,即使有可能,环境变量(存在于运行 ISE 的进程级别)也会被保留。


Visual Studio 代码

可以在 Visual Studio Code 中执行此操作 - 无论是在当前选项卡中还是在不继承旧会话的环境变量的情况下:

当运行的集成终端正在运行PowerShell Integrated Console 时,PowerShell 扩展附带了它 - 相当于 ISE 中的控制台窗格 - 您可以通过单击工具栏中的垃圾桶图标来终止当前实例如下图所示的终端面板。

执行此操作后,系统会自动询问您是否要启动一个新会话,该会话在新的 powershell.exe / pwsh 子进程中运行

或者,最好 - 您可以将 PowerShell 扩展配置为自动在您开始新的调试会话时启动新会话 >,正如zett42 指出的那样:

  • 或者:打开设置 (Ctrl-,) 视图,搜索 powershell temporary 并打开 PowerShell > Debugging: Create Temporary Integrated Console 设置。

  • 或者:将"powershell.debugging.createTemporaryIntegratedConsole": true 直接添加到您的settings.json 文件中。

这会为每个调试会话自动启动一个新的临时 PowerShell 集成控制台,在您启动下一个调试会话之前,该控制台一直保持打开状态,此时新的临时控制台会简单地替换旧的。

  • 奇怪的是,从扩展版本 2020.6.0 开始,您不能在 PowerShell 集成控制台中使用 exit,但您也可以使用垃圾桶图标将其杀死,对于 临时 控制台将(值得称赞)提示您重新启动它;相反,下一个调试会话将按需创建一个新的临时控制台。

此配置避免了困扰 ISE总是(并且可能部分是提示问题的原因)以及 PowerShell 扩展的 默认值 配置:

  • 在那里,代码运行点源,即直接在同一会话的顶级范围内,因此早期调试运行留下的状态会干扰后续调试运行;例如,创建一个内容为 (++$i) 的脚本并重复运行它 - 您会看到 $i 在每次运行时都会递增。

  • 为每次调试运行启动一个新会话可以避免这个问题。

【讨论】:

  • @BillMoore:公平点;他们实际上确实为 Windows PowerShell console 实施了某种过时警告,现在您会在其中收到建议在启动时尝试 PowerShell [Core]。如果您受到启发,您可以建议为 ISE here 实施类似的方法,尽管我不会屏住呼吸。
【解决方案2】:

Ctrl+t 打开一个新的 powershell 选项卡,开始时就好像它是一个新的 powershell 会话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2021-12-30
    • 2013-04-08
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多