通过组策略禁用PowerShell脚本执行需将GPO链接至目标OU,在“计算机配置→管理模板→Windows组件→Windows PowerShell”中启用“关闭PowerShell脚本执行”,强制设为Restricted策略,从而禁止.ps1等脚本运行,但不影响交互式命令。
通过组策略禁用PowerShell脚本执行(针对特定OU)
要限制某个组织单位(ou)下的计算机或用户无法运行powershell脚本,核心方法是配置“执行策略”(execution policy)的组策略设置。powershell默认允许本地脚本运行,但可通过组策略强制设为 restricted(受限),从而完全禁止脚本执行(包括 .ps1 文件、交互式脚本块等)。
关键步骤:链接GPO到目标OU
组策略本身不直接“识别”OU是否“允许运行脚本”,而是通过将策略应用到该OU来实现定向控制。操作要点如下:
- 在域控制器上打开组策略管理控制台(GPMC),右键目标OU → 选择“在此域中创建GPO并在此处链接”(或链接一个已存在的GPO)
- 编辑该GPO → 导航至:
计算机配置 → 管理模板 → Windows 组件 → Windows PowerShell - 启用策略:“关闭 PowerShell 脚本执行”(注意:此策略会强制设为 Restricted,且优先级高于用户手动运行
Set-ExecutionPolicy) - 若需更精细控制(如仅禁用远程脚本、允许本地签名脚本),可改用:
“启用 PowerShell 脚本执行” → 设为 RemoteSigned 或 AllSigned,再配合证书或路径白名单(需额外配置)
区分计算机策略与用户策略
PowerShell执行策略在计算机和用户层级均可配置,但效果不同:
- 计算机配置下的策略影响该OU下所有加入域的计算机(无论谁登录),适用于终端设备统一管控
- 用户配置下的策略影响该OU下所有用户(无论在哪台电脑登录),适合按人员角色限制(如禁止普通员工运行脚本)
- 实际中建议优先使用计算机配置,避免因用户漫游导致策略失效;如需双重控制,可同时启用两者
验证与注意事项
策略生效后需确认是否真正阻断脚本运行:
- 在目标OU内某台客户端执行
Get-ExecutionPolicy -List,应显示 MachinePolicy 或 UserPolicy 行为 Restricted - 尝试双击或通过
PowerShell.exe -File test.ps1运行脚本,应提示“由于在此系统上禁止执行脚本” - 注意:此策略不影响 PowerShell 命令行交互式输入命令(如
Get-Process),只阻止脚本文件(.ps1)和配置文件(profile.ps1)执行 - 若OU中存在Windows Server或管理员工作站,谨慎启用——可能影响运维自动化脚本

















