当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

作者:精品下载站 日期:2024-12-14 03:39:24 浏览:17 分类:玩电脑

如何修复“此系统上禁用运行脚本”PowerShell


尝试运行 PowerShell 脚本,您是否收到错误“无法加载,因为running 脚本在此系统上被禁用”?然后我们需要更改PowerShell中的执行策略。为了保护您的计算机免受恶意脚本的侵害,PowerShell 的执行策略默认设置为受限。

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

此默认设置将阻止您在计算机上运行任何 PowerShell 脚本,甚至是您自己编写的脚本。幸运的是,我们可以使用 PowerShell 中的单个命令轻松更改策略。

在本文中,我将解释如何快速修复此系统上运行脚本被禁用的错误、不同的策略是什么以及如何在具有组策略的所有计算机上更改它。

修复在此系统上禁用运行脚本

我们将从快速修复开始。下面的方法只能暂时解决问题,因此您可以运行脚本并继续。如需更可持续的解决方案,请向下滚动到下一章。

  1. 打开 PowerShell 或 Windows 终端
  2. 输入以下命令来运行您的脚本

    powershell -ExecutionPolicy 绕过 -File script.ps1

    [玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

上述方法只是暂时绕过执行策略。这对于单个文件非常有用,但它要求您每次要运行该文件时都使用上面的命令。更可持续的解决方案是改变执行政策。

永久更改执行策略

当您大量使用 PowerShell 脚本时,您可能希望永久更改执行策略。但在我们研究如何更改策略之前,我们首先解释一下其目的以及可用的不同策略。

执行策略并非设计为限制用户执行 PowerShell 脚本的安全系统。每个用户都可以简单地绕过当前 PowerShell 会话中的策略,甚至可以将脚本内容直接复制并粘贴到控制台中。那么该政策的目的是什么呢?嗯,它旨在防止无意中执行 PowerShell 脚本。

更改政策时,我们有五个选项可供选择:

Restricted

默认选项 - 不允许运行任何 PowerShell 脚本

Unrestricted

可以运行任何脚本,显示下载脚本的警告

RemoteSigned

下载的脚本需要数字签名。您可以
运行本地编写的脚本。您可以取消阻止下载的脚本
以在没有签名的情况下运行它们

ByPass

您可以运行所有脚本并且不会显示任何警告

AllSigned

您只能运行来自受信任发布者的签名脚本

大多数人倾向于将策略设置为无限制,这允许您运行任何 PowerShell 脚本。但更好的选择是使用 RemoteSigned 策略。这样您就可以运行任何本地编写的脚本,但您必须首先取消阻止所有下载的脚本。额外的处理可防止用户意外下载恶意 PowerShell 脚本并在其系统上运行。

所有用户与当前用户

当改变政策时我们还可以确定改变的范围。该政策适用于以下范围:

CurrentUser

该策略仅针对当前登录的用户设置

LocalMachine

针对计算机上所有用户的策略已更改

Process

仅针对当前 PowerShell 会话更改策略

设置当前用户的执行策略

因此,最常见的情况是您想要更改当前用户的 PowerShell 执行策略。这将为登录用户解决“此系统上禁用运行脚本”的错误。我们将策略设置为RemoteSigned,这意味着用户仍然需要对下载的脚本执行额外的步骤。

  1. 打开PowerShell
  2. 输入下面的命令并按回车
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
  1. 可选 - 使用命令 Get-ExecutionPolicy 验证设置

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

现在,您可以运行任何本地创建的 PowerShell 脚本,而不会出现在此系统上禁用运行脚本错误。

当您尝试使用执行策略 RemoteSigned 运行下载的 PowerShell 脚本时,您会收到无法加载文件的错误。 PowerShell 脚本未经过数字签名:

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

要解决此问题,您首先需要取消阻止该文件。为此,我们当然可以使用 PowerShell cmdlet Unblock-File。只需键入 cmdlet,然后键入文件名/路径:

Unblock-File -path .\CreateTestFiles.ps1

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

为所有用户设置执行策略

我们还可以更改计算机上所有用户的策略。为此,您需要具有提升的权限(管理员权限)。

  1. 右键单击“开始”或按Windows 键 + X
  2. 选择Windows PowerShell(管理员)或Windows Terminal(管理员)
  3. 键入以下命令:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

我们可以使用 cmdlet Get-ExecutionPolicy -List 验证结果,该命令显示每个范围的策略。值得一提的是,CurrentUser 策略优先于 LocalMachine 策略。因此,当您将 CurrentUser 策略设置为restricted,将 LocalMachine 设置为 RemoteSigned 时,用户仍然无法执行任何 PowerShell 脚本,因为 CurrentUser 范围中设置的策略会否决 LocalMachine 策略。

仅更改当前会话的策略

另一种选择是仅更改当前 PowerShell 会话的策略。当您需要运行几个 PowerShell 脚本,但又不想永久更改策略时,此方法非常有用。您可以对每个脚本使用“绕过”选项,但也可以仅针对当前 PowerShell 会话设置更改范围。为此,请使用范围 Process

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

使用 GPO 设置执行策略 PowerShell

当您需要修改多台计算机上的策略时,最好使用组策略。组策略允许您更改属于域成员的多台计算机上的 Windows 设置。该策略的另一个优点是该设置无法在计算机上被覆盖。

  1. 打开组策略管理编辑器并创建一个新策略。
  2. 展开计算机配置
  3. 导航到策略 > 管理模板 > Windows 组件 > Windows PowerShell
  4. 打开设置打开脚本执行

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

  1. 将设置更改为启用
  2. 选择执行策略允许本地脚本和远程签名脚本。这与我们之前设置的RemoteSigned相同。

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

我们可以验证作为我们刚刚应用设置的 OU 成员的客户端之一的设置。首先,确保使用 GPUpdate 命令在计算机上应用最新的策略。您可以选择使用 RSOP 命令来验证策略,或者仅检查是否使用以下命令设置了执行策略:

Get-ExecutionPolicy -list

# Result
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy    RemoteSigned
   UserPolicy    RemoteSigned
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined

如前所述,策略的优点是用户无法再更改策略。当您使用 cmdlet set-executionpolicy 时,您将收到一条错误消息,指出策略已更改,但该设置被在更具体范围内定义的策略覆盖:

[玩转系统] 如何修复“此系统上禁用运行脚本”PowerShell

总结

在 PowerShell 中设置执行策略的最佳方法是使用组策略。这样,您域中的所有现有和新计算机都可以使用正确的策略进行配置。当然,您可以为 IT 部门创建不同的策略。

我希望这篇文章可以帮助您解决“无法加载,因为在此系统上禁用运行脚本”的错误,如果您有任何疑问,请在下面发表评论。如果您想了解有关 PowerShell 的更多信息,请务必阅读本入门指南。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯