You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMD中通过PowerShell执行含参数的变量命令?

解决CMD调用PowerShell执行带参数命令变量的问题

问题原因

当你把dir /a这类带参数的命令整段赋值给变量,用&($test)执行时,PowerShell会把整个字符串当作单一命令名称去查找,系统显然不存在名为dir /a的命令,所以报错。

可行解决方法

方法1:用数组存储命令与参数(推荐,安全无注入风险)

在CMD中直接执行:

powershell -c "$test = @('dir', '/a'); & $test"

原理:PowerShell的数组可以分别存储命令和参数,&调用数组时会自动识别第一个元素为命令,后续为参数。

方法2:使用Invoke-Expression(需注意引号转义)

如果坚持用字符串形式,要处理CMD的引号嵌套问题,比如:

powershell -c '$test = "dir /a"; Invoke-Expression $test'

或者:

powershell -c "$test = ""dir /a""; Invoke-Expression $test"

原理:Invoke-Expression会直接解析执行字符串里的命令逻辑,但这种方式存在命令注入风险,非必要不推荐。

方法3:通过Start-Process调用(适合需单独窗口或更多控制的场景)

如果需要控制执行窗口等额外设置,可使用:

powershell -c "$test = @('dir', '/a'); Start-Process -NoNewWindow -FilePath $test[0] -ArgumentList $test[1..$test.Length]"

参数-NoNewWindow确保在当前CMD窗口输出结果,避免弹出新PowerShell窗口。

内容的提问来源于stack exchange,提问作者user18623114

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 23:02:01