【问题标题】:ps1 cannot be loaded because running scripts is disabled on this systemps1 无法加载,因为在此系统上禁用了运行脚本
【发布时间】:2017-04-28 07:07:35
【问题描述】:

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

首先我将ExecutionPolicy 设置为Unrestricted,脚本现在从PowerShell ISE 运行。

现在这是我的 c# 代码:

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,网址为 http://go.microsoft.com/fwlink/?LinkID=135170.

【问题讨论】:

  • 您是否尝试将策略范围设置为本地计算机? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
  • 运行Get-ExecutionPolicy -List 并使用结果编辑您的问题。此命令将向您显示不同的 Scope 及其 ExecutionPolicy 设置。
  • 恐怕这似乎行不通,但要明确一点,这不是命令行级别的,因为我可以在远程桌面上运行而不会出现问题。跨度>

标签: c# powershell


【解决方案1】:

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

您可以尝试以下方法:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

【讨论】:

  • 顺便说一句,这应该在Powershell中执行,而不是windows的cmd。
  • @Tom:更改后有任何安全问题吗?我们应该在更改或工作完成后将其设置回受限或更安全的值吗? (读取当前值并在工作完成后将其设置回它?)
  • @HDJEMAI,我想这取决于您运行它的上下文。 Unrestricted 表示您可以运行所有脚本。另一种选择是将执行策略设置为RemoteSigned,因为这将允许Allow local scripts and remote signed scripts,但取决于应用程序及其正在执行的操作,这可能仍会引发相同的错误。我认为您的方法在安全性方面是有效的,您可以随时使用Get-ExecutionPloicy 事先阅读政策内容。虽然这是说范围是当前用户,所以我认为风险很小。我希望这会有所帮助。
  • 我也会为RemoteSigned 担保。 Unrestricted 可能没有必要允许。
  • 如何限制回来?
【解决方案2】:

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

Set-ExecutionPolicy RemoteSigned

【讨论】:

  • 这应该是被接受的答案,因为其他答案可能不安全并导致问题。
  • 怎么样? Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned 这对我有用,并将范围限制为当前用户。
  • @abrar 取决于您希望通过 shell 脚本实现的目标以及您正在处理的要求。如果它可以完成工作并且不会引起任何问题,您可以使用其中任何一种方式。这完全取决于项目要求。在某些情况/约束下,对你有用的东西可能对我不起作用,反之亦然。我们都可以根据需要选择优化解决方案。
  • 我已经执行了接受的答案-,-
  • @ShahidKamal 他们怎么不安全?微软自己说执行策略是not 一个安全功能。
【解决方案3】:

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

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

【讨论】:

  • 也适用于其他语言(现在正在编辑 Ionic 应用程序)!
  • 也为我工作,在 VIsual Studio Code 终端中运行,以便使用 tsc 命令运行 Typescript
【解决方案4】:

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

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

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

【讨论】:

    【解决方案5】:

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

    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
    

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

    【讨论】:

    • 在 IntelliJ Idea 终端上运行,它工作正常。谢谢:)
    【解决方案6】:

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

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
    

    【讨论】:

    • 此答案中的指导与几年前发布的投票最多的答案中的指导有何不同?
    • 对于某些人来说,此命令仅在 vs code 终端中有效。不在窗口终端中
    【解决方案7】:

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

    应用以下选项

    【讨论】:

    • 我尝试打开终端并输入 vue create new-project 并且它有效:)。谢谢你的建议
    • 我遵循了整个过程,它开始工作了。谢谢
    • 你间接做的就是:** Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned **
    • @Digambernegi 确定 :)
    【解决方案8】:

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

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

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

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

    【讨论】:

      【解决方案9】:
      1. 关闭当前的命令提示符或 vs 代码(终端)

      2. 在管理员模式下打开 PowerShell

      3. 在 PowerShell 中运行此命令 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

      4. 回答 Y 或 A(如果您想向所有用户授予访问权限)

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

      【讨论】:

      • 这为我解决了问题。就我而言,我无法在 VSCode 的集成终端 (Powershell) 中运行 Angular CLI 命令。我不必关闭或重新启动我的终端,它只是在命令后立即工作。
      【解决方案10】:

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

      Set-ExecutionPolicy RemoteSigned

      【讨论】:

        【解决方案11】:

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

        【讨论】:

        • 我在使用 npm 模块时遇到了同样的错误,这是我最喜欢的解决方案。如果您删除 .ps1 文件,它将很高兴使用其他两个脚本之一(例如 Windows 上的 .cmd,否则没有扩展名的那个),并且您不必更改安全配置
        • 对 yarn.ps1 做了同样的事情,完美!谢谢
        【解决方案12】:

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

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

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

        【讨论】:

          【解决方案13】:

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

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

          Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
          

          按回车

          享受:)

          【讨论】:

            【解决方案14】:

            打开 windows powershell 或 cmd 并粘贴以下命令。如果它要求进一步确认,只需输入 YesSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

            下面应该出现

            `Execution Policy Change
            

            执行策略有助于保护您免受您不信任的脚本的影响。更改执行策略可能会暴露 请注意 about_Execution_Policies 帮助主题中描述的安全风险 https://go.microsoft.com/fwlink/?LinkID=135170。是否要更改执行策略? [Y] 是 [A] 全部是 [N] 否 [L] 全部否 [S] 暂停 [?] 帮助(默认为“N”):是 PS C:\Users\Tessact01>`

            【讨论】:

              【解决方案15】:

              最近,当我尝试在netlify 上部署应用程序时,我遇到了与running-scripts-is-disabled-on-this-system 相同的问题

              下面的 cmd 对我有用。

              Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
              
              

              【讨论】:

                【解决方案16】:

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

                【讨论】:

                  猜你喜欢
                  • 2013-05-03
                  • 2021-10-27
                  • 2020-03-06
                  • 2021-02-22
                  • 2019-12-31
                  • 2020-06-20
                  • 2013-10-06
                  • 2019-10-05
                  • 2022-10-25
                  相关资源
                  最近更新 更多