无法在 Visual Studio Code 中调试 PowerShell 脚本

Posted

技术标签:

【中文标题】无法在 Visual Studio Code 中调试 PowerShell 脚本【英文标题】:Cannot debug PowerShell scripts in Visual Studio Code 【发布时间】:2021-02-01 10:13:30 【问题描述】:

我将使用 F5 在 Visual Studio Code 中运行 PowerShell 脚本。

我的 Visual Studio Code 版本是 1.50.1,提交时间为 d2e414d9e42

我收到以下错误消息:

在 PowerShell 会话开始之前,无法调试或运行 PowerShell 脚本。等待 PowerShell 会话完成启动并重试。

我安装了官方的 Microsoft PowerShell 扩展,并且我的 launch.json 包含以下内容:


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

如何使用 F5 进行调试?

【问题讨论】:

我也有同样的问题。你试过this吗? 查看取消选中“PowerShell:启用配置文件加载”(“powershell.enableProfileLoading”:false)是否有帮助。如果没有,请检查可能注入到您的 Code.exe 和 Powershell.exe 进程中的任何非 Microsoft 进程挂钩。根据我的经验,Avecto Privilege Guard 挂钩 (PGHook.dll) 是 VS Code PowerShell 问题的臭名昭著的罪犯。 我认为等待一会儿是行不通的,而且每次都会发生这种情况?只是偶尔检查一下,如果我尝试在窗口完成加载之前运行脚本,它将在会话的其余部分中断,或者直到我从命令面板运行“重新启动 PowerShell 会话”。 @marsze 查看 Windows 挂钩超出了本主题的范围,但您可以使用 sysinternals "Process Explorer" 查看正在运行的 Windows 进程的加载模块。如果您在进程中看到一个非 Microsoft DLL,那么很可能它是一个钩子。同样,您之前提供的链接也没有提及“powershell.enableProfileLoading”:false。对不起。 F5 是调试运行的 OOBE(开箱即用体验)VSCode 默认值。 IT 在“运行”菜单选项中将其显示为第一个选择。在左侧图标菜单中,这是要单击以进行运行的调试图标。安装扩展后,您仍然需要为所需的首选项(用户和工作区)配置设置。 VSCode 详细说明了这一点,以及 Youtube 上的许多视频。只需搜索“VSCode PowerShell 设置”和“VSCode PowerShell 调试”。在您的系统上的多个位置创建了多个“launch.json”文件。在您的系统中搜索以供审核。 【参考方案1】:

在按 F5 之前关闭所有打开的 PowerShell 窗口为我解决了这个问题。

您可能还需要确保没有此会话退出警告:

如果这样做,请单击“重新启动当前会话”,然后再次尝试按 F5。

这是在 launch.json 中的以下配置(在 Windows 10 机器上):


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

【讨论】:

【参考方案2】:

要解决此问题,您可以尝试通过以下方式重新启动当前的 PowerShell 会话:

    打开命令托盘 (command+shift+p) 搜索重新启动当前会话并选择它 再次按下F5 按钮

您可能会再次看到问题弹出,但只需再次按F5,您应该会看到事情开始执行。

【讨论】:

【参考方案3】:

如果您的 PackageManagement 模块不是最新的,则可能会弹出此错误消息,VSCode 会对此进行处理,并在屏幕右下方显示一个弹出窗口,询问您是否要更新并且不考虑 Powershell开始直到它被解雇。

【讨论】:

【参考方案4】:

安装最新版本的包管理,然后重新启动 PowerShell 会话或 VSCode 解决了该问题。

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

【讨论】:

以上是关于无法在 Visual Studio Code 中调试 PowerShell 脚本的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code 无法识别 EJS

无法在 Visual Studio Code 中加载文档的 TSLint 库

无法将 GitLab 与 Visual Studio Code 连接

“代码 。”命令无法从 mac 终端打开 Visual Studio Code 运算符

Visual Studio Code pylint:无法导入'protorpc'

Visual Studio Code Flutter 无法更新 Dart SDK