Visual Studio代码cmd错误:无法加载,因为此系统上的运行脚本被禁用

时间:2019-05-18 12:51:27

标签: powershell command-line visual-studio-code vscode-settings

在Visual Studio代码中,我试图从命令行执行script.bat,但出现以下错误:

  

文件C:\ Theses_Repo \ train-cnn \ environment \ Scripts \ activate.ps1无法加载,因为此系统上的运行脚本已禁用。

阅读this后,我试图以管理员模式运行Visual Studio代码,以为问题出在特权上。但是无论如何都会抛出错误。

20 个答案:

答案 0 :(得分:26)

面对同样的问题,这对我有用。 以管理员身份打开PowerShell并将其粘贴。

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser  

答案 1 :(得分:22)

从Visual Studio Code处理此问题的最简单方法是将powerShell更改为cmd(假设没有理由在您的情况下使用powershell)。为此,请执行以下几个步骤:

  1. 终端->新终端
  2. 在右下角选择“选择默认外壳”选项

enter image description here

  1. 选择“命令提示符”

enter image description here

我在当前答案中没有找到这样的解决方案。希望有帮助!

答案 2 :(得分:13)

问题是 PowerShell 默认限制运行脚本,除非我们更改 execution policies

我们可以通过添加 -ExecutionPolicy Bypass 参数来更改执行策略。在 vscode 中,您必须通过在 settings.json 中添加以下内容(ctrl + shift + p 并输入“settings.json”)来创建带有这些参数的 shell 配置文件

"terminal.integrated.profiles.windows": {
  "PowerShell": {
    "source": "PowerShell",
    "icon": "terminal-powershell",
    "args": ["-ExecutionPolicy", "Bypass"]
  }
},
"terminal.integrated.defaultProfile.windows": "PowerShell",

注意:terminal.integrated.shellArgs 设置已deprecated

答案 3 :(得分:12)

  1. 打开VS代码

  2. 文件->首选项->设置

  3. 在搜索栏中->搜索“ terminal.integrated.shellArgs”

  4. 单击Terminal上的“在setting.json中编辑”> integrated> ShellArgs>窗口[无论您使用什么操作系统,请选择相应的设置]

  5. 在json文件的顶部添加以下内容:

    terminal.integrated.shellArgs.windows”:[“ -ExecutionPolicy”,“绕过”]

    例如,添加json后,可能会像这样:

{
    "terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "Bypass"],
    "git.autofetch": true,
    "peacock.favoriteColors": [
        {
            "name": "Angular Red",
            "value": "#b52e31"
        },
        {
            "name": "Auth0 Orange",
            "value": "#eb5424"
        },
  1. 重新启动VS代码,然后再次尝试命令(在我的情况下,我正在尝试ng serve)

答案 4 :(得分:9)

运行以下命令即可解决问题。

set-ExecutionPolicy RemoteSigned -Scope CurrentUser (我只在 windows 下试过)

答案 5 :(得分:7)

我以管理员身份打开VS Code,并在终端中运行以下命令:

Set-ExecutionPolicy Unrestricted

它使我可以无错误地运行脚本。

答案 6 :(得分:4)

  1. 打开 VS 代码
  2. 转到文件 -> 首选项 -> 设置
  3. 在搜索栏中 -> 搜索“terminal.integrated.defaultprofile.windows”
  4. 单击“终端”>“集成”>“默认配置文件”的“在 setting.json 中编辑”:Windows [无论您使用什么操作系统,请选择相应的设置]。

在 JSON 文件的顶部添加:

"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.profiles.windows": {
    "PowerShell": {
        "source": "PowerShell",
        "args": [
            "-ExecutionPolicy",
            "Bypass"
        ]
    }
},

注意:不推荐使用以下设置行:

"terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "Bypass"]

答案 7 :(得分:3)

  1. 按下键盘上的 windows 按钮

  2. 输入“PowerShell”

  3. 右键单击 Windows PowerShell

  4. 点击以管理员身份运行

  5. 运行以下命令并按“Y”确认

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

了解更多信息:https://www.roelpeters.be/solved-running-scripts-is-disabled-on-this-system-in-powershell/

答案 8 :(得分:3)

解决问题的步骤,

  1. 在您的计算机中打开 PowerShell(这将更改您的 Windows 计算机上的 PowerShell 执行策略)
  2. 运行(获取机器的执行策略)
<块引用>

Get-ExecutionPolicy -List

  1. 运行
<块引用>

Set-ExecutionPolicy -Scope CurrentUser Unrestricted

答案 9 :(得分:3)

出于安全原因,如果您与其他用户共享计算机,请使用: PowerShell:

Set-ExecutionPolicy-范围CurrentUser不受限制

不需要管理员权限。

答案 10 :(得分:2)

以下是解决此问题的方法,

  1. 按下键盘上的 Windows 按钮。
  2. 输入“PowerShell”
  3. 右键单击 Windows PowerShell
  4. 点击以管理员身份运行
  5. 运行以下命令并按“Y”确认
<块引用>

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

答案 11 :(得分:1)

如果您不需要在PowerShell上显式运行它,那么您可能想尝试在命令提示符下运行它。

只需键入cmd,然后按Enter。这样做将在当前终端窗口中打开命令提示符。它的行为与普通命令提示符相同。

答案 12 :(得分:1)

以ADMIN身份运行VS代码。

这修复了我在家用PC上运行ng new my-App的问题,该问题在我首次从安装过程中打开VS-Code时产生了此错误。

答案 13 :(得分:0)

我的 Visual Studio 2019(版本 16.8.4)出现此错误。 最后我找到了解决方案: EnableScripts(从 PowerShell 操作系统窗口制作(来自 Windows 10 的注册表编辑器)

如下浏览 PowerShell 并使 0 => 1,就是这样。

Registry Editor

Registry Editor

enter image description here

答案 14 :(得分:0)

由于Windows的安全性,我在Windows 10中遇到了相同的问题: 该解决方案非常简单: 转到Windows Power Shell> Set-ExecutionPolicy -ExecutionPolicy不受限制 然后输入Y并输入

答案 15 :(得分:0)

为更简单起见,除了里卡多的答案外,我还想添加vs代码设置路径。您可以这样获得它:

文件->首选项->设置,然后在搜索栏中输入“自动化”。

然后,通过查看操作系统输入“在settings.json中编辑”。

最后,在括号中添加以下b / n:

"terminal.integrated.shellArgs.windows": ["-ExecutionPolicy", "Bypass"]

答案 16 :(得分:0)

这不是特定于VSCode的问题,它是一个操作系统。 有不同级别的计算机,用户,进程允许运行PowerShell脚本,并且必须将其启用。

如果这是您的计算机,只需将执行策略更改为RemoteSigned或不受限制,即可应用于整个系统。如果只想在VSCode中使用它,请更改设置文件或更改快捷方式以包含要使用的执行策略。该建议是RemoteSigned。这意味着所有本地代码都将运行,但是任何远程脚本都必须签名。

如果这是公司计算机,其“执行”设置为“受限制”,则在更改该设置之前不会运行任何代码。您仍然可以通过在VSCode编辑器中将其全部选中并单击F8来运行代码。现在,如果他们已经执行了此政策,那么您需要与IT部门讨论,让他们为您进行更改。

所有这些细节都在PowerShell帮助文件中详细说明。

Get-Command -Name '*executionpolicy*' | ft -AutoSize

CommandType Name                Version Source                       
----------- ----                ------- ------                       
Cmdlet      Get-ExecutionPolicy 3.0.0.0 Microsoft.PowerShell.Security
Cmdlet      Set-ExecutionPolicy 3.0.0.0 Microsoft.PowerShell.Security


# get function / cmdlet details
(Get-Command -Name Get-ExecutionPolicy).Parameters
Get-help -Name Get-ExecutionPolicy -Full
Get-help -Name Get-ExecutionPolicy -Online
Get-help -Name Get-ExecutionPolicy -Examples

    Get-ExecutionPolicy
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    Get-ExecutionPolicy -List

(Get-Command -Name Set-ExecutionPolicy).Parameters
Set-help -Name Set-ExecutionPolicy -Full
Set-help -Name Set-ExecutionPolicy -Online
Set-help -Name Set-ExecutionPolicy -Examples

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    Set-ExecutionPolicy -ExecutionPolicy Restricted
    Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ExecutionPolicy} | Set-ExecutionPolicy -Force
    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned -Force
    Get-ExecutionPolicy -List
    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Undefined
    Set-ExecutionPolicy -Scope Process -ExecutionPolicy AllSigned
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

请注意,如果您的组织正在控制此事务,请再次与他们联系before trying to bypass the policy,因为如果他们这样做了,这也意味着他们正在监视它,并且如果您这样做也将知道。我已经看到过像RPE这样的东西。 (恢复生产事件)

答案 17 :(得分:0)

Win10 用户

  1. 在 Visual Studio Code 中:文件 -> 首选项 -> 设置

  2. 输入搜索:terminal.integrated.defaultProfile.windows

  3. 点击“在 setting.json 中编辑”

  4. 添加:

    “terminal.integrated.profiles.windows”:{ “电源外壳”: { “小路” : [ “${env:windir}\System32\WindowsPowerShell\v1.0\powershell.exe” ], "source": "PowerShell", "icon": "终端-powershell", “参数”:[ "-NoLogo", "-执行策略", “旁路”] } }, "terminal.integrated.defaultProfile.windows": "PowerShell",

  5. 保存并重启 Visual Studio Code

答案 18 :(得分:0)

在撕掉我的头发后,这就是我最终要做的。我没有使用 CMD 或 PowerShell,而是切换到 BASH。 在 settings.json 中:

//"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
// "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",   
        "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",

此处的 CMD 和 Powershell 已被注释掉,以防您想返回其中之一。 要访问 settings.json:

> File -> Preferences -> Settings -> in search type : "settings.json" ->
> Under [JSON] click "Edit in settings.json"

答案 19 :(得分:0)

我发现here可以将以下内容添加到visual studio code settings中,问题将消失:

    _openDialog() {
      var d = this.$.dialog;
      var upload = this.$.responseDemo;

      upload.addEventListener('upload-response', function(event) {
        var results = JSON.parse(event.detail.xhr.response);
        console.log('upload xhr after server response: ', event.detail.xhr);

        if (results.errorResponse) {
          event.detail.file.messages = [{'type': 'fatal', 'message': results.errorResponse.message }];
        } else {
          if (results[0].responseFilename) {
            event.detail.file.responseFilename = results[0].responseFilename;
            event.detail.file.location = results[0].location;
            if (results[0].messages.length) {
              event.detail.file.messages = results[0].messages;
            }
          }
        }
      });
      this.$.dialog.open();
    }

原因是,在构建命令行集成(如Visual Studio代码)时,您需要自行设置命令行策略。通过设置以上配置,Visual Studio代码将为您完成此任务。

(阅读this可以更好地理解命令行策略)