如何在Windows PowerShell中启用和使用脚本执行策略
默认情况下,iPowerShell 允许您通过其控制台运行命令 (cmdlet)。 要执行脚本,您可以使用脚本代码创建一个记事本文件,使用 .ps1 文件扩展名保存它,然后通过 PowerShell 控制台执行它。 也可以直接将脚本粘贴到控制台执行。
但是,如果这是您第一次通过 PowerShell执行脚本,您会遇到“正在运行的脚本已被禁用”错误。 默认情况下,禁用 PowerShell 上的脚本执行作为一项安全措施,以防止恶意脚本在您的系统上运行。 在这里,我们向您展示了在 Windows PowerShell 上启用脚本执行策略的两种方法。
推荐:如何在Windows 11中启用RGB照明控制
如何检查您现有的执行策略
您可以使用 PowerShell cmdlet 获取当前的执行策略。 了解您当前的执行策略对于了解您是否需要更改策略是必要的。
要获取当前用户的当前执行策略:
- 以管理员身份打开 Windows PowerShell。
- 在 PowerShell 控制台中键入以下命令并按 Enter:
get-executionpolicy
- 由于您在执行脚本时遇到错误,因此返回可能会显示 Restricted 受限制的 作为您当前的执行政策。
- 如果您需要查看所有支持范围的执行策略:
get-executionpolicy -list
您需要将执行策略更改为 RemoteSigned 才能运行本地脚本而不会出现错误。 您可以从“设置”应用和 PowerShell 更改执行策略。
如何使用设置应用程序启用 PowerShell 执行策略
您可以使用“设置”应用更改 PowerShell 执行策略并将其设置为 RemoteSigned。 您所要做的就是调整开发人员部分中的 PowerShell 设置,以更改执行策略以启用 PowerShell 脚本执行。
要使用设置更改执行策略:
- 按 Win + I 打开设置。
- 打开 Privacy & Security 隐私与安全 左窗格中的选项卡。
- 接下来,点击 For developers 对于开发人员。
- 点击展开 PowerShell 部分。
- 将开关切换到 change the execution policy to allow local PowerShell scripts to run without signing – Require signing for remote scripts更改执行策略以允许本地 PowerShell 脚本无需签名即可运行 – 远程脚本需要签名.
- 完成后,打开 PowerShell,键入 get executionpolicy 执行政策, 并按下 Enter进入. 当前用户的执行策略现在设置为 RemoteSigned远程签名。
- 如果需要禁用执行策略,请切换 PowerShell 开关并将其设置为 Off.
如何使用 PowerShell 允许脚本在 PowerShell 中运行
您可以使用 PowerShell cmdlet 将执行策略设置为 RemoteSigned。 命令行界面使您无需使用“设置”应用程序即可轻松快速更改执行策略。
此外,设置应用程序只能启用或禁用 RemoteSigned 执行策略。 而 PowerShell 还允许您设置其他策略和范围。
要使用 PowerShell 更改执行策略:
- 以管理员身份打开 PowerShell。
- 在 PowerShell 窗口中,键入以下命令并按 Enter进入:
Set-ExecutionPolicy RemoteSigned
- 如果出现提示,请按 A 确认动作。 这将设置 RemoteSigned 远程签名 所有用户的执行策略。 如果你想为 Current User 当前用户 仅使用 Scope 参数后跟用户名。
- 例如,设置 RemoteSigned 远程签名 的执行政策 CurrentUser当前用户,使用以下命令:
Set-ExecutionPolicy RemoteSgined -Scope CurrentUser
- 代替 当前用户 根据您的要求,在上述命令中与其他用户(范围)一起使用。
如何使用 PowerShell 删除脚本执行策略
如果要禁用脚本执行,请将执行策略设置为 Undefined 不明确的 使用e Set_ExecutionPolicy 命令。 这是默认状态,可防止 PowerShell 执行任何脚本。
要使用 PowerShell 禁用脚本执行:
- 使用提升的权限打开 PowerShell。
- 接下来,键入以下命令并按 enter 键以禁用所有用户的脚本执行:
Set-ExecutionPolicy undefined
- 上面的命令将为所有用户设置执行策略默认值(未定义)。 如果要为特定范围禁用脚本执行,请使用以下命令:
Set-ExecutionPolicy undefined -Scope CurrentUser
- 上面的命令将禁用脚本执行 CurrentUser 当前用户.
了解执行策略和范围
简单的说,PowerShell的执行策略就是控制PowerShell如何执行配置文件和脚本的策略。 预期目的是防止用户意外运行恶意脚本。 七个 PowerShell 执行策略是 Default, Restricted, RemoteSigned, AllSigned, Unrestricted, Bypass, and Undefined 默认、受限、RemoteSigned、AllSigned、不受限、旁路和未定义.
下表简要说明了所有 PowerShell 执行策略:
执行政策 | 执法 |
默认 | 将默认执行策略设置为 Restricted on Windows Client 和 RemoteSigned on Windows Server。 |
AllSigned | 允许执行发布者签名的脚本。 |
旁路 | 不受限制地执行大型应用程序的脚本。 |
远程签名 | 允许本地编写的脚本执行。 从 Internet 下载的脚本需要数字签名。 |
受限制的 | 不允许脚本执行,但只允许执行单个 PowerShell 命令。 |
不明确的 | 将执行策略设置为 Restricted for Windows clients 和 RemoteSigned for Windows Server。 |
无限制 | 允许执行未签名的脚本,并对从 Internet 下载的脚本发出警告。 |
执行策略范围
您可以在 PowerShell 中为特定范围设置执行策略。 五个执行策略范围是 MachinePolicy, UserPolicy, Process, CurrentUser, 和 本地机器.
下表简要说明了所有执行策略范围:
执行策略范围 | 执法 |
用户策略 | 由当前用户的组策略配置。 |
机器政策 | 由所有用户的组策略配置。 |
当前用户 | 为当前用户配置并存储在 HKEY_CURRENT_MACHINE 注册表子项中。 |
本地机器 | 为所有用户配置并存储在 HKEY_CURRENT_MACHINE 注册表子项中。 |
过程 | 影响当前的 PowerShell 会话并在会话关闭时自动删除。 |
在 Windows 上添加或删除 PowerShell 脚本执行策略
Windows 客户端默认禁用 PowerShell 上的脚本执行,Windows 服务器设置为 RemoteSigned。 但是,高级用户可以更改执行策略以运行本地、已签名和未签名的 PowerShell 脚本。
或者,您可以通过将脚本粘贴到 PowerShell 控制台或将您的脚本回显到 PowerShell 标准输入来绕过 PowerShell 执行策略。 如果您想在不更改执行策略的情况下执行脚本,这将很有用。