ChatGPT解决这个技术问题 Extra ChatGPT

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

我尝试从 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 无法加载,因为在此系统上禁用了运行脚本。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=135170 上的 about_Execution_Policies。

您是否尝试将策略范围设置为本地计算机? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
运行 Get-ExecutionPolicy -List 并使用结果编辑您的问题。此命令将向您显示不同的 Scope 及其 ExecutionPolicy 设置。
恐怕这似乎不起作用,但为了清楚起见,这不是在命令行级别,因为我能够在远程桌面上运行而不会出现问题。

H
Henke

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

以管理员身份在 PowerShell 中,您可以尝试以下操作:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

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

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

Set-ExecutionPolicy RemoteSigned


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

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

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

也适用于其他语言(现在正在编辑 Ionic 应用程序)!
也为我工作,在 VIsual Studio Code 终端中运行,以便使用 tsc 命令运行 Typescript
M
Mohd Yusuf

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

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

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


B
Bhadresh Patel

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

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

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


在 IntelliJ Idea 终端上运行,它工作正常。谢谢 :)
在 VSCODE 中工作,谢谢!
为我工作 vscode react native
L
Lei

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

应用以下选项

https://i.stack.imgur.com/vcjVS.png


我试图打开终端并输入 vue create new-project 并且它有效:)。谢谢你的建议
我遵循了整个过程,它开始工作了。谢谢
所有你间接做的是:** Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned **
@Digambernegi 当然:)
这应该被勾选为永久解决方案
I
Ibrahim khalil Shakik

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

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

此答案中的指导与几年前发布的投票最多的答案中的指导有何不同?
对于某些人来说,此命令仅在 vs code 终端中有效。不在窗口终端
d
dr Chandra Kant Sharma

以下三个步骤用于修复 Running Scripts is disabled on this System 错误

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

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

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


M
Mohammad Atif Aftab

关闭您当前的命令提示符或 vs 代码(终端) 在管理员模式下打开 PowerShell 在 PowerShell 中运行此命令 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted answer Y 或 A(如果您想授予所有用户访问权限)现在打开命令提示符或vs 代码或任何你喜欢运行你的项目的东西


这为我修好了。就我而言,我无法在 VSCode 的集成终端 (Powershell) 中运行 Angular CLI 命令。我不必关闭或重新启动我的终端,它只是在命令之后立即工作。
D
Dayo Jaiye

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

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

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

按回车

享受 :)


P
Prabhath Withanage

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


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

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

Set-ExecutionPolicy RemoteSigned


N
Nabeh Nabeh

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

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

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


M
Muhammad Ikram UL Mustafa

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

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

这不是一个很大的安全问题吗?
不知道,但你只为当前用户设置它,所以我不认为它会是
此外,微软自己也表示执行策略不是安全功能。
N
Nitesh Sharma

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

下面的 cmd 对我有用。

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser


N
Nisha Jain

我收到了这个错误:

 ng : File C:\Users\Nisha Jain\AppData\Roaming\npm\ng.ps1 cannot be loaded 
 because running scripts is disabled on this system. For more        
 information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/? 
 LinkID=135170.
   At line:1 char:1
   + ng serve
   + ~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

只需删除此文件 ng.ps1

   Path is : C:\Users\username\AppData\Roaming\npm\ng.ps1

这对我来说可以。


A
Ankit Kumar

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

下面应该出现

`Execution Policy Change

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


S
Sashini Hettiarachchi

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