Windows默认执行策略为Restricted,禁止所有.ps1脚本运行,旨在防止恶意脚本静默执行;推荐设为RemoteSigned,允许本地脚本直接运行、远程脚本需可信签名,兼顾安全与实用性。
windows 默认禁止运行 powershell 脚本,这是系统内置的安全防护机制,不是故障,而是有意设计。核心目标是防止恶意脚本静默执行,同时保留用户对本地脚本的可控使用权。关键在于选对策略、设对作用域,而不是一味“放开”。
看清当前策略再动手
执行策略按作用域生效,优先级从高到低为:Process → CurrentUser → LocalMachine → GroupPolicy → MachinePolicy。不同作用域可能设置不同值,最终生效的是最高优先级的非Undefined策略。
- 以任意权限打开 PowerShell,运行 Get-ExecutionPolicy -List 查看全部作用域当前值
- 重点关注 CurrentUser 和 LocalMachine 两行,日常使用中它们最常被修改
- 若某作用域显示 Undefined,说明该层级未显式配置,将继承下一级策略
推荐用 RemoteSigned 策略
RemoteSigned 是兼顾安全与实用的默认选择:允许你本地写的脚本直接运行,但要求从网络下载(如 GitHub、邮件附件)的脚本必须带可信数字签名。它不降低防护等级,只区分来源。
- 仅影响当前用户(无需管理员权限):Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
- 影响本机所有用户(需管理员权限):Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
- 执行后会提示确认,输入 Y 回车即可,无需重启或注销
避免高风险操作
Unrestricted 和 Bypass 看似“一劳永逸”,实则绕过全部检查,等同于关闭安全提醒。一旦误点恶意脚本,系统不会拦截也不会警告。
- Bypass 只应在单次调试时用,且必须配合完整路径:powershell -ExecutionPolicy Bypass -File ".\test.ps1"
- AllSigned 要求每个脚本都签名,适合企业环境,但个人开发几乎无法落地——自己签的证书默认不受信,需额外部署根证书
- 永远不要用 Set-ExecutionPolicy Unrestricted,它和关闭防火墙一样危险
图形界面与组策略作为补充
命令行不是唯一入口。Windows 10/11 设置中“开发者选项”开启后,会自动将 CurrentUser 策略设为 RemoteSigned;专业版及以上还可通过组策略统一管控。
- 设置 → 更新和安全 → 开发者选项 → 启用“开发者模式”(本质是后台调用 Set-ExecutionPolicy)
- Win+R 输入 gpedit.msc → 计算机配置 → 管理模板 → Windows 组件 → Windows PowerShell → 启用“启用PowerShell脚本执行”,并指定策略
- 组策略设置优先级高于命令行,适用于批量管理或策略锁定场景


















