PowerShell系列:PowerShell脚本执行策略梳理
作者:郝光明
运维 通过执行策略可以限制 PowerShell 脚本的系列执行范围,为系统管理员提供一定的脚本安全保障。策略可以限制执行脚本的执行用户、限制执行脚本的策略来源等等。今天给大家讲解PowerShell脚本执行策略相关的梳理知识!
![](https://s6.51cto.com/oss/202309/05/c5dbb6197ec1155203a609c45a7bb5c9012952.png)
PowerShell 脚本执行策略用于控制何时以及何种方式执行 PowerShell 脚本。系列通过执行策略可以限制 PowerShell 脚本的脚本执行范围,为系统管理员提供一定的执行安全保障。策略可以限制执行脚本的策略用户、限制执行脚本的梳理来源等等。这些策略可以在计算机本地或组策略中进行配置。系列最终保护计算机免受恶意脚本和非法操作的脚本侵害。
![PowerShell系列:PowerShell脚本执行策略梳理 不需要数字签名直接允许](https://image11.m1905.cn/mdb/uploadfile/2023/1215/thumb_1_128_176_20231215044818196166.jpg)
今天给大家讲解PowerShell脚本执行策略相关的执行知识!
![PowerShell系列:PowerShell脚本执行策略梳理 不需要数字签名直接允许](https://image11.m1905.cn/mdb/uploadfile/2023/1215/thumb_1_128_176_20231215044527844183.jpg)
1、策略执行策略等级
- AllSigned:要求所有脚本和配置文件都由受信任的梳理发布者签名,包括在本地计算机上编写的脚本;从尚未分类为受信任或不受信任的发布者运行脚本之前,需要确认是否执行。
- Bypass:脚本执行没有任何限制。
- RemoteSigned:本地计算机上的本地脚本,不需要数字签名直接允许;从Internet或其他计算机下载的脚本,需要脚本必须经过数字签名才能运行。
- Restricted:允许单个命令,但不允许脚本,它会阻止运行所有脚本文件。
- Undefined:当前范围没有执行策略。简单来说如果所有范围的执行策略都是Undefined的话,实际使用的测试和Default策略保持一致。
- Default:默认执行策略,Window客户端为Restricted;Windows服务器为RemoteSigned 。
- Unrestricted:脚本运行不受签名限制,如果脚本不来自本地 Intranet 区域的脚本和配置文件,运行之前会有警告。
2、执行策略范围
- MachinePolicy:由组策略为计算机的所有用户设置。
- UserPolicy:由计算机当前用户的组策略设置。
- Process:范围 Process 仅影响当前 PowerShell 会话;执行策略保存在环境变量 $env:PSExecutionPolicyPreference中,而不是注册表中。 关闭 PowerShell 会话时,变量和值将被删除。
- CurrentUser:执行策略仅影响当前用户。 它存储在 HKEY_CURRENT_USER 注册表子项中。
- LocalMachine:执行策略会影响当前计算机上的所有用户。 它存储在 HKEY_LOCAL_MACHINE 注册表子项中。
![](https://s9.51cto.com/oss/202309/05/91d343420780da7f4e219422f95ce24f176135.jpg)
![PowerShell系列:PowerShell脚本执行策略梳理 不需要数字签名直接允许](https://image11.m1905.cn/mdb/uploadfile/2023/1215/thumb_1_128_176_20231215050407241687.jpg)
3、执行策略命令语法格式
Set-ExecutionPolicy [-ExecutionPolicy] <ExecutionPolicy> [[-Scope] <ExecutionPolicyScope>] [-Force] [-WhatIf] [-Confirm] [<CommonParameters>]
参数说明:
- -ExecutionPolicy :指定执行策略。
- -Scope:指定受执行策略影响的范围。 默认作用域为 LocalMachine。
- -Force:调整所有脚本提示,建议谨慎使用该参数。默认值为 None,可以指定为 False。
- -WhatIf:显示运行该 cmdlet 时会发生什么情况。默认值为False。
- -Confirm:提示你在运行 cmdlet 之前进行确认。默认值是False。
4、执行策略常用命令
获取当前执行策略。
Get-ExecutionPolicy
![](https://s2.51cto.com/oss/202309/05/d984f57906bc99697cd940d30d05a336fffd5f.jpg)
获取影响当前会话的所有执行策略。
Get-ExecutionPolicy -List
![](https://s7.51cto.com/oss/202309/05/036be586368a2b62e9f299fd4bf8923afbfa87.jpg)
调整脚本执行策略。
Set-ExecutionPolicy ALLSIGNED
![](https://s7.51cto.com/oss/202309/05/87034c5554d38a57049981202ded9eb43ef0cb.jpg)
删除执行策略。
若要删除特定范围的执行策略,请将执行策略设置为 Undefined。
注意:Windows 客户端的默认策略为Restricted 。
#删除本地计算机所有用户的执行策略Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
责任编辑:姜华 来源: 小明互联网技术分享社区 PowerShell运维
(责任编辑:百科)