无法加载ps1,因为在此系统上禁用了运行脚本

use*_*033 14 c# powershell

我尝试powershell从c#运行脚本.

首先,我设置ExecutionPolicyUnrestricted和脚本从现在正在运行PowerShell ISE.

现在这是我的代码:

class Program
{
    private static PowerShell ps;
    static void Main(string[] args)
    {
        ps = PowerShell.Create();
        string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
        ExecuteScript(ps1File);
        Console.ReadLine();
    }

    static void ExecuteScript(string script)
    {
        try
        {
            ps.AddScript(script);
            Collection<PSObject> results = ps.Invoke();
            Console.WriteLine("Output:");
            foreach (var psObject in results)
            {
                Console.WriteLine(psObject);
            }
            Console.WriteLine("Non-terminating errors:");
            foreach (ErrorRecord err in ps.Streams.Error)
            {
                Console.WriteLine(err.ToString());
            }
        }
        catch (RuntimeException ex)
        {
            Console.WriteLine("Terminating error:");
            Console.WriteLine(ex.Message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

无法加载ps1,因为在此系统上禁用了运行脚本.有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=135170上的 about_Execution_Policies .

Tom*_*Tom 54

这可能是由于当前用户未定义ExecutionPolicy.

您可以尝试以下方法:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,这应该在“Powershell”中执行,而不是在 Windows 的 cmd 中执行。 (31认同)
  • 我还为“RemoteSigned”提供担保。“不受限制”可能是不必要的允许。 (11认同)
  • 有效!谢谢 ! (10认同)
  • @HDJEMAI,我想这取决于您运行它的上下文。“无限制”意味着您可以运行所有脚本。另一个选项是将执行策略设置为“RemoteSigned”,因为这将允许“允许本地脚本和远程签名脚本”,但根据应用程序及其正在执行的操作,这可能仍会引发相同的错误。我认为您的方法在安全性方面是有效的,并且您始终可以使用“Get-ExecutionPloicy”事先阅读策略是什么。虽然这么说,范围是当前用户,所以我认为风险很小。我希望这有帮助。 (4认同)
  • 如何限制背部? (4认同)
  • @Tom:更改此值后有任何安全问题吗?当我们的更改或工作完成时,我们是否应该将其设置回受限制或更安全的值?(读取当前值并在工作完成后将其设置回原值?) (3认同)
  • 我在使用 Parcel 时遇到了这个问题,根据您的回答解决了,谢谢! (2认同)

Sun*_*nny 48

在管理模式下打开powershell并运行以下命令

Set-ExecutionPolicy RemoteSigned

  • 怎么样?`Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned` 这对我有用,并将范围限制为当前用户。 (14认同)
  • 这应该被接受的答案,因为其他答案可能不安全并导致问题。 (2认同)
  • @abrar 取决于您想要通过 shell 脚本实现的目标以及您正在处理的要求。如果这两种方式都能完成工作并且不会引起任何问题,您可以使用其中一种方式。这完全取决于项目要求。在某些情况/限制下,对你有用的方法可能对我不起作用,反之亦然。我们都可以根据需要选择优化解决方案。 (2认同)

小智 38

转到系统设置 -> 更新和安全 -> 对于开发人员 -> PowerShell

应用以下选项

在此输入图像描述

  • 您间接所做的就是: ** Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned ** (2认同)

Har*_*jah 37

在您的 powershell 或 cmd 中运行此代码

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Run Code Online (Sandbox Code Playgroud)

  • 也为我工作,在 VIsual Studio Code 终端内运行,以便使用 tsc 命令运行 Typescript (2认同)

小智 34

如果您使用的是 Visual Studio 代码:

  1. 打开终端
  2. 运行命令:Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. 然后运行命令量角器 conf.js

这与量角器测试脚本执行相关,我遇到了同样的问题,它是这样解决的。


Moh*_*tab 16

  1. 关闭当前的命令提示符或 VS Code(终端)
  2. 在管理员模式下打开 PowerShell
  3. 在 PowerShell 中运行此命令

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy 无限制

  1. 回答 YA(如果您想授予所有用户访问权限)

  2. 现在打开命令提示符或 vs code 或任何你喜欢的东西来运行你的项目


Day*_*iye 12

将此代码粘贴到您的终端中

(Visual Studio Code 终端或您正在使用的任何 IDE)

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Run Code Online (Sandbox Code Playgroud)

按回车键

享受 :)


dr *_*rma 10

以下三个步骤用于修复在此系统错误上禁用运行脚本

Step1:为了解决这类问题,我们必须以管理员模式启动power shell。

步骤 2:键入以下命令 set-ExecutionPolicy RemoteSigned 步骤 3:按 Y 进行确认。

访问以下了解更多信息https://youtu.be/J_596H-sWsk


Bha*_*tel 9

在终端(Visual Studio Code 终端或您正在使用的任何 IDE)中尝试此命令,问题将解决

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
Run Code Online (Sandbox Code Playgroud)

注意:不要将 CurrentUser 更改为您的用户名

  • 在 IntelliJ Idea 终端上运行并且它有效。谢谢 :) (2认同)

小智 8

在管理模式下打开 PowerShell 并运行以下命令

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Run Code Online (Sandbox Code Playgroud)


小智 7

在管理员模式下打开 Windows powershell 并运行以下命令及其工作 VOILA!

设置执行策略 RemoteSigned


小智 7

这是我能解决这个问题的最好方法

如下:

  1. 首先,以管理员身份运行打开 PowerShell。

  2. 然后,在 PowerShell 中运行此命令

    设置-ExecutionPolicy -ExecutionPolicy RemoteSigned

  3. 之后输入 Y 并按 Enter 键。

  4. 重新打开或重新启动

  5. 完毕!工作顺利!


小智 6

PowerShell 执行策略默认设置为“受限”。您可以使用 Set-ExecutionPolicy cmdlet 更改 PowerShell 执行策略。要运行外部脚本,请将策略设置为 RemoteSigned。

\n\n

PS C:> Set-ExecutionPolicy RemoteSigned \n下面是 PowerShell 中四种不同执行策略的列表

\n\n

受限 \xe2\x80\x93 无法运行任何脚本。\nAllSigned \xe2\x80\x93 只能运行受信任发布者签名的脚本。\nRemoteSigned \xe2\x80\x93 下载的脚本必须由受信任发布者签名。 \n无限制 \xe2\x80\x93 可以运行所有 Windows PowerShell 脚本。

\n


小智 6

打开 VS Code 终端并运行以下脚本:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Run Code Online (Sandbox Code Playgroud)

  • 此答案中的指导与几年前发布的得票最多的答案中的指导有何不同? (3认同)

Pra*_*age 5

另一种解决方案是从目录 C:\Users%username%\AppData\Roaming\npm\ 中删除 ng.ps1 并清除 npm 缓存


小智 5

每个 shell 都需要使用这个:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned