在PowerShell中使用环境变量路径运行EXE文件
解决PowerShell中通过环境变量路径运行可执行文件的错误
你的问题很典型——PowerShell的语法规则和CMD不一样,直接拼接环境变量和路径字符串会触发语法解析错误,下面给你讲清楚原因和几种正确的操作方式:
为什么会报错?
当你输入$Env:SystemRoot\system32\cmd.exe时,PowerShell会把$Env:SystemRoot识别为一个变量,但后续的\system32\cmd.exe没有和变量做合法的字符串拼接处理,PowerShell无法理解这个语法,所以会抛出Unexpected token的解析错误。
正确的操作方法
方法1:使用调用运算符& + 引号包裹路径
这是最直接的方式,用引号把完整的路径表达式包起来,让PowerShell先解析环境变量得到完整路径,再通过调用运算符&执行:
& "$Env:SystemRoot\system32\cmd.exe"
&是PowerShell的调用运算符,专门用来执行外部可执行文件或脚本;- 双引号会自动展开里面的环境变量,最终得到
C:\Windows\system32\cmd.exe这个完整路径。
方法2:用Join-Path拼接路径(更清晰)
如果路径比较复杂,或者你想分步处理路径,可以用Join-Path命令先拼接环境变量和子路径,再执行:
# 先拼接得到完整路径 $cmdPath = Join-Path -Path $Env:SystemRoot -ChildPath "system32\cmd.exe" # 执行程序 & $cmdPath
这个方法可读性更强,也能避免手动拼接路径时的拼写错误。
方法3:直接调用程序名(仅适用于PATH中的程序)
因为system32目录默认在系统的PATH环境变量里,所以你其实可以直接输入程序名运行:
cmd.exe
不过这个方法只适用于那些已经在PATH中的程序,如果你要运行的程序不在PATH里,还是推荐前两种方法。
内容的提问来源于stack exchange,提问作者pL3b
相关产品推荐
相关产品推荐

