Cannot debug PowerShell scripts in Visual Studio Code

Viewed 20757

I am to run PowerShell scripts in Visual Studio Code with F5.

My Visual Studio Code version is 1.50.1 with commit d2e414d9e42

I get the following error message:

Cannot debug or run a PowerShell script until the PowerShell session has started. Wait for the PowerShell session to finish starting and try again.

I installed the official Microsoft PowerShell extension and my launch.json includes the following:

{
        "name": "PowerShell: Launch Script",
        "type": "PowerShell",
        "request": "launch",
        "script": "countcharacters.ps1",
        "cwd": "${workspaceFolder}"
}

How can I make debugging work with F5?

4 Answers

To solve this problem, you can try to restart your current PowerShell session by:

  1. Opening the command pallet (command+shift+p)
  2. Searching for Restart Current Session and selecting it
  3. Pressing the F5 button again

You may see the issue pop up once more, but just press F5 again and you should see things start to execute.

Closing all open PowerShell windows before pressing F5 fixed this issue for me.

You also may need to make sure that you don't have this Session exited warning:

Session exited warning

If you do, click "Restart Current Session", then try pressing F5 again. Restart Current Session option

This is with the following config in launch.json (On a Windows 10 machine):

{
    "name": "PowerShell: Launch script.ps1",
    "type": "PowerShell",
    "request": "launch",
    "script": ".\\script.ps1",
    "cwd": "${workspaceFolder}"
}

Installing the latest version of package management and then restarting either the PowerShell session or VSCode resolved the issue.

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Install-Module -Name PackageManagement -Force -MinimumVersion 1.4.6 -Scope CurrentUser -AllowClobber -Repository PSGallery

This error message can pop up if your PackageManagement module isn't up to date, VSCode picks up on that, displays a pop-up on the lower right of the screen asking if you want to update and doesn't consider Powershell started until it's dismissed.

Related