必须同时满足执行策略放宽、powershell以管理员身份启动、调用时明确绕过策略限制三条件;需通过win+x选择管理员powershell,用-executionpolicy bypass临时执行或set-executionpolicy remotesigned -scope currentuser持久设置,脚本路径须避开受保护目录且含空格时用反引号转义。

要在Windows 10的PowerShell中强制以系统最高权限运行脚本,必须同时满足三个硬性条件:脚本执行策略已放宽、PowerShell进程本身以管理员身份启动、调用时明确绕过策略限制——缺一不可,否则哪怕脚本路径完全正确也会被静默拦截。
第一步:确认并提升PowerShell进程权限
打开PowerShell前就决定权限层级,不能靠后续命令“升级”。最稳的方式是按下 Win + X → 选择 Windows PowerShell(管理员) → 点击“是”通过UAC验证。此时窗口标题栏必须显示“管理员:Windows PowerShell”,这是唯一可信的权限标识。
如果误点普通PowerShell再输 Start-Process powershell -Verb RunAs,会新开一个窗口但原窗口仍无权,容易混淆操作上下文。
第二步:解除脚本执行策略限制
方法一:临时绕过(推荐用于单次脚本执行)
在已打开的管理员PowerShell中,直接运行脚本时加上策略参数:powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\deploy.ps1"
方法二:持久修改当前用户策略(适合频繁调试)
在管理员PowerShell中执行:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
输入 Y 确认。此操作仅影响当前登录用户,不波及系统级策略,【不会触发组策略刷新延迟,立即生效】。
注意:不要用 Set-ExecutionPolicy Unrestricted,它会让所有远程脚本无警告执行,存在明显安全缺口。
第三步:确保脚本调用路径与权限上下文一致
1、脚本文件不能放在受保护目录(如 C:\Windows 或 C:\Program Files)下,否则即使有管理员权限也会因文件所有权问题被拒绝访问。
2、若脚本需写入注册表或服务配置,必须使用完整绝对路径调用,例如:Start-Process powershell.exe -ArgumentList "-ExecutionPolicy Bypass -File `"$env:USERPROFILE\Documents\init.ps1`"" -Verb RunAs
3、【双引号内路径含空格时必须用反引号转义,否则参数解析失败,脚本根本不会启动】











