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

时间:2016-12-13 09:21:47

标签: c# powershell

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

首先我将ExecutionPolicy设置为Unrestricted,脚本现在从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);
        }
    }
}

输出是:

  

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

12 个答案:

答案 0 :(得分:24)

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

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

答案 1 :(得分:9)

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

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

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

答案 2 :(得分:8)

这可能是由于当前用户有一个未定义的ExecutionPolicy

您可以尝试以下方法:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

答案 3 :(得分:7)

以下三个步骤可用于修复由于系统错误而导致运行脚本被禁用的情况

第一步:要解决此类问题,我们必须以管理员模式启动Power Shell。

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

访问以下内容以获取更多信息https://youtu.be/J_596H-sWsk

答案 4 :(得分:6)

我只是在终端中尝试这个 cmd 并且我的问题已经解决

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

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

答案 5 :(得分:3)

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

Set-ExecutionPolicy RemoteSigned

答案 6 :(得分:3)

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

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

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

按回车

享受:)

答案 7 :(得分:2)

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

答案 8 :(得分:2)

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

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

答案 9 :(得分:1)

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

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

受限制–无法运行任何脚本。 AllSigned –仅可运行由受信任的发布者签名的脚本。 RemoteSigned –下载的脚本必须由受信任的发布者签名。 不受限制–所有Windows PowerShell脚本都可以运行。

答案 10 :(得分:1)

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

Set-ExecutionPolicy RemoteSigned

答案 11 :(得分:0)

我认为您可以在管理模式或命令提示符下使用Powershell。