PowerShell中Start-Process报错:找不到接受参数的位置参数
解决Start-Process调用fldigi时的位置参数错误
问题原因
你错误地将fldigi的命令行参数--config-dir直接作为Start-Process的参数传递,PowerShell会把它识别为Start-Process本身的位置参数,但该cmdlet并没有这个参数,因此抛出"找不到位置参数"的错误。
正确写法
方法1:使用-ArgumentList传递参数(推荐数组形式)
将目标程序的所有参数放到-ArgumentList中,数组形式可以避免引号转义的麻烦:
Start-Process -FilePath "C:\Program Files\Fldigi-4.2.05\fldigi.exe" -ArgumentList "--config-dir", "C:\Users\sktho\fldigi-configs\fldigiIC7300"
方法2:直接调用可执行文件(无需Start-Process)
如果不需要单独启动新窗口,直接用调用操作符&执行exe即可,写法更接近你熟悉的批处理逻辑:
& "C:\Program Files\Fldigi-4.2.05\fldigi.exe" --config-dir "C:\Users\sktho\fldigi-configs\fldigiIC7300"
方法3:带引号转义的字符串形式
如果坚持用字符串传递参数,需要转义参数里的引号:
Start-Process -FilePath "C:\Program Files\Fldigi-4.2.05\fldigi.exe" -ArgumentList "--config-dir `"C:\Users\sktho\fldigi-configs\fldigiIC7300`""
关键思路
- PowerShell cmdlet(比如
Start-Process)的参数和目标程序的命令行参数完全分离,不能混写 - 所有要传给目标程序的参数必须通过
Start-Process的-ArgumentList参数传递 - 数组形式传递参数是最可靠的方式,PowerShell会自动处理参数的引号和空格问题
内容的提问来源于stack exchange,提问作者G6SGA
相关产品推荐
相关产品推荐

