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)无法加载,因为在此系统上禁用了运行脚本 [关闭]
pycharm报错:无法加载文件seleniumvenvScriptsactivate.ps1,因为在此系统上禁止运行脚本。
pycharm报错:无法加载文件seleniumvenvScriptsactivate.ps1,因为在此系统上禁止运行脚本。