Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Powershell IDE: How to restart interactive shell to clear all variables without leaving Powershell ISE?

Let's say I've been using Powershell ISE for a while and my environment space is starting to get dirty, and I need to restart the interactive shell... I don't want to close my editor and reopen it. How to restart powershell ISE interactive shell to clear all variables without closing and reopening the Powershell ISE?

enter image description here

like image 493
Bimo Avatar asked Oct 17 '25 06:10

Bimo


2 Answers

First, the obligatory notice:

  • The PowerShell ISE is no longer actively developed and there are reasons not to use it (bottom section), notably not being able to run PowerShell (Core) 6+.

  • The actively developed editor that offers the best PowerShell development experience, across PowerShell editions and platforms, is Visual Studio Code, combined with its PowerShell extension.


ISE:

Colin's helpful answer is a pragmatic solution: open a new tab and close the old one.

However, that new session invariably retains the environment variables of the old one, because the ISE hosts the PowerShell SDK in-process rather than running powershell.exe as a child process.

To restart a session in the current tab you would therefore have to instruct the hosted System.Management.Automation.PowerShell instance to discard its current runspace and create a new one - and I'm not aware of a way to do this.

Even if it were possible, however, the environment variables - which exist at the level of the process that runs the ISE - would be retained.


Visual Studio Code:

It is possible to start a new session in the current tab and to do so without inheriting the old session's environment variables:

While the integrated terminal running is running the PowerShell Integrated Console, which the PowerShell extension comes with - which is the equivalent of the console pane in the ISE - you can kill the current instance by clicking the trash-can icon in the toolbar of the terminal panel as shown below.

After doing so, you're prompted for starting a new session, which runs in a new powershell.exe / pwsh child process.

kill the running shell in VS Code

Alternatively - and preferably - you can configure the PowerShell extension to automatically start a new session whenever you start a new debugging session, as zett42 points out:

  • Either: Open the Settings (Ctrl-,) view, search for powershell temporary and turn on the PowerShell > Debugging: Create Temporary Integrated Console setting.

  • Or: Add "powershell.debugging.createTemporaryIntegratedConsole": true directly to your settings.json file.

This automatically starts a new, temporary PowerShell Integrated Console for each debugging session, which remains open until you start the next debugging session, at which point a new temporary console simply replaces the old one.

  • Curiously, as of extension version 2022.11.0, you cannot exit out of a PowerShell Integrated Console, but you can use the trash-can icon or Stop-Process -Id $PID to kill it, if needed, which in the case of a temporary console will (commendably) not prompt you to restart it; instead, the next debugging session will create a new, temporary console on demand.

This configuration avoids a major pitfall that afflicts the ISE invariably (and may in part be what prompted the question) as well as the PowerShell extension's default configuration:

  • There, the code runs dot-sourced, i.e. directly in the top-level scope of the same session, so that the state left behind by earlier debugging runs can interfere with subsequent debugging runs; for instance, create a script with content (++$i) and run it repeatedly - you'll see that $i increments every time, across runs.

  • Starting a new session for every debugging run avoids this problem.

like image 55
mklement0 Avatar answered Oct 18 '25 20:10

mklement0


Ctrl+T opens a new PowerShell tab that starts as if it was a fresh PowerShell session.

like image 24
Colin Avatar answered Oct 18 '25 22:10

Colin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!