无法加载文件*.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅

官网解释

长说明

PowerShell 执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶意脚本的执行。

在Windows计算机上,你可以为本地计算机、当前用户或特定会话设置执行策略。 还可使用组策略设置为计算机和用户设置执行策略。

本地计算机和当前用户的执行策略存储在注册表中。 无需在 PowerShell 配置文件中设置执行策略。 特定会话的执行策略仅存储在内存中,在关闭会话时将丢失。

执行策略不是限制用户操作的安全系统。 例如,当用户无法运行脚本时,可以通过在命令行中键入脚本内容来轻松绕过策略。 相反,执行策略可帮助用户设置基本规则,并防止用户无意中违反这些规则。

在非Windows计算机上,默认执行策略为 Unrestricted 且无法更改。 cmdlet Set-ExecutionPolicy 可用,但 PowerShell 显示一条控制台消息,指出它不受支持。 虽然 Get-ExecutionPolicy 在 Unrestricted 非 Windows Bypass 平台上返回 ,但行为确实匹配,因为这些平台不实现Windows 安全中心区域。

PowerShell 执行策略

这些策略仅在其他平台上Windows实施。 PowerShell 执行策略如下所示:

AllSigned

  • 脚本可以运行。
  • 要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。
  • 在从尚未分类为受信任或不受信任的发布者运行脚本之前,提示你。
  • 运行已签名但恶意的脚本的风险。

Bypass

  • 不阻止任何操作,并且没有任何警告或提示。
  • 此执行策略适用于将 PowerShell 脚本内置到较大应用程序中的配置,或用于 PowerShell 是具有其自己的安全模型的程序基础的配置。

Default

  • 设置默认执行策略。
  • Restricted 对于 Windows 客户端。
  • RemoteSigned Windows服务器。

RemoteSigned

  • 服务器计算机的默认Windows策略。
  • 脚本可以运行。
  • 需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)进行数字签名。
  • 对于在本地计算机上编写且未从 Internet 下载的脚本,不需要数字签名。
  • 如果脚本未受阻止(例如使用 cmdlet),则运行从 Internet Unblock-File 下载且未签名的脚本。
  • 从 Internet 来源(而不是 Internet)运行未签名脚本的风险,以及可能是恶意的已签名脚本的风险。

Restricted

  • 客户端计算机的默认Windows策略。
  • 允许单个命令,但不允许脚本。
  • 阻止运行 .ps1xml .psm1 所有脚本文件,包括格式化和配置文件 () 、模块脚本文件 () 和 PowerShell 配置文件 () .ps1 。

Undefined

  • 当前作用域中未设置执行策略。
  • 如果所有作用域中的执行策略 Undefined 都是 ,Restricted 则有效执行策略适用于 Windows 客户端,RemoteSigned 适用于 Windows 服务器。

Unrestricted

  • 非计算机的默认执行Windows无法更改。
  • 未签名的脚本可以运行。 存在运行恶意脚本的风险。
  • 在运行不是来自本地 Intranet 区域中的脚本和配置文件之前,警告用户。

 备注

在未区分通用命名约定 (UNC) 路径与 Internet 路径的系统上,可能不允许 UNC 路径标识的脚本使用 RemoteSigned 执行策略运行。

执行策略范围

可以设置仅在特定范围内有效的执行策略。

的有效值为 Scope 、MachinePolicy****UserPolicy、Process****CurrentUser 和 LocalMachine。 LocalMachine 是设置执行策略时的默认选项。

这些值 Scope 按优先顺序列出。 优先的策略在当前会话中有效,即使设置了限制性更强、优先级较低的策略。

有关详细信息,请参阅 Set-ExecutionPolicy

MachinePolicy

由 组策略计算机的所有用户设置。

UserPolicy

由 组策略当前用户的设置。

Process

范围 Process 仅影响当前 PowerShell 会话。 执行策略保存在环境变量 中 $env:PSExecutionPolicyPreference,而不是注册表中。 关闭 PowerShell 会话后,将删除变量和值。

CurrentUser

执行策略仅影响当前用户。 它存储在注册表 HKEY_CURRENT_USER项中 。

LocalMachine

执行策略会影响当前计算机上所有用户。 它存储在注册表 HKEY_LOCAL_MACHINE项中 。

使用 PowerShell 管理执行策略

若要获取当前 PowerShell 会话的有效执行策略,请使用 Get-ExecutionPolicy cmdlet。

以下命令获取有效执行策略:

Get-ExecutionPolicy

更改执行策略

若要更改计算机上 PowerShell 执行Windows,请使用 Set-ExecutionPolicy cmdlet。 更改会立即生效。 无需重启 PowerShell。

如果为 范围 LocalMachine 或 CurrentUser 设置执行策略,则更改将保存在注册表中,并一直有效,直到再次更改它。

如果为范围设置执行策略 Process ,该策略不会保存在注册表中。 将保留执行策略,直到当前进程和任何子进程关闭。

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

解决方案

1.管理员打开PowerShell

2. 执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

 

 

文档链接:https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.2

posted @ 2022-05-11 09:39  微风吹过~  阅读(3281)  评论(0编辑  收藏  举报