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

使用Start-Process传递带字符串的PowerShell命令参数报错求助

解决Start-Process启动PowerShell传递含字符串命令的引号问题

问题原因

你之前的命令因双引号转义错误,导致新启动的PowerShell进程将test识别为命令而非字符串值,从而抛出未找到命令的错误。

正确写法示例

方法1:用单引号嵌套避免转义

利用PowerShell单引号的原样解析特性,在内部字符串使用单引号,外层用双引号包裹,同时通过两个单引号转义内部的单引号:

Start-Process Powershell -ArgumentList '-command "$var = ''test''"'

新进程会收到命令:$var = 'test',可正确将test赋值给变量。

方法2:正确转义双引号

如果需要使用双引号包裹字符串,需对双引号进行双重转义(当前PowerShell解析一次,新进程再解析一次):

Start-Process Powershell -ArgumentList '-command $var = `"test`"'

或者将整个命令用单引号包裹,内部双引号直接保留:

Start-Process Powershell -ArgumentList '-command ''$var = "test"'''

方法3:使用Base64编码命令(最可靠)

对于复杂命令,推荐将命令编码为Base64,彻底规避转义问题:

  1. 先编码目标命令:
$command = '$var = "test"'
$encodedCommand = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($command))
  1. 用编码后的字符串启动进程:
Start-Process Powershell -ArgumentList "-EncodedCommand $encodedCommand"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:33:06