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

Posted

技术标签:

【中文标题】ps1 无法加载,因为在此系统上禁用了运行脚本【英文标题】:ps1 cannot be loaded because running scripts is disabled on this system 【发布时间】: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 设置。 恐怕这似乎行不通,但要明确一点,这不是命令行级别的,因为我可以在远程桌面上运行而不会出现问题。跨度> 【参考方案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 代码:

    打开终端 运行命令:Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted 然后运行命令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】:

    关闭当前的命令提示符或 vs 代码(终端)

    在管理员模式下打开 PowerShell

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

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

    现在打开命令提示符或 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。

【讨论】:

以上是关于ps1 无法加载,因为在此系统上禁用了运行脚本的主要内容,如果未能解决你的问题,请参考以下文章

NPM 安装的应用程序(例如文件 C:\Users\name\AppData\Roaming\npm\ng.ps1)无法加载,因为在此系统上禁用了运行脚本 [关闭]

.ps1 无法加载,因为此系统上禁用了脚本的执行

pycharm报错:无法加载文件seleniumvenvScriptsactivate.ps1,因为在此系统上禁止运行脚本。

pycharm报错:无法加载文件seleniumvenvScriptsactivate.ps1,因为在此系统上禁止运行脚本。

pycharm:无法加载文件activate.ps1,因为在此系统上禁止运行脚本,Windows10系统

yarn : 无法加载文件 D:ProgramFiles odejsyarn.ps1,因为在此系统上禁止运行脚本