PowerShell脚本以管理员身份运行报错,普通模式运行正常问题求助
问题原因
- 报错本质是路径特殊字符解析失败:你的脚本存放在
Program Files (x86)目录下,路径包含空格、括号两类特殊字符,批处理调用PowerShell传递路径参数时,包裹路径的双引号在参数传递过程中失效,PowerShell会将空格作为参数分隔符,把(x86)中的x86误识别为独立的可执行命令,最终触发命令未找到的报错。 - 你之前单独在提权的PowerShell窗口执行命令正常,是因为手动指定路径时主动加了引号包裹,没有触发解析错误。
解决方法
直接修改批处理代码,给PowerShell传递路径参数时用转义的单引号包裹路径,确保包含特殊字符的路径能被正确识别,不需要修改原有PowerShell脚本代码,修改后的批处理代码如下:
@ECHO OFF PowerShell.exe -NoExit -ExecutionPolicy Bypass -Command "Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy Bypass -NoExit -Wait -File ''%~dpn0.ps1''' -Verb RunAs" pause
代码说明
用两个连续的单引号''包裹路径变量%~dpn0.ps1,在PowerShell解析时会自动转义为单个单引号,把整个路径识别为完整的参数,不会被空格、括号拆分。
验证方式
修改批处理代码后直接运行,会正常弹出管理员权限的PowerShell窗口,依次输出Hello World!和Running as Administrator!提示即代表修复成功。
内容的提问来源于stack exchange,提问作者TheLittlePeace
相关产品推荐
相关产品推荐

