PowerShell执行带JSON参数的Python打包EXE时报参数缺失错误求助
问题:PowerShell执行带JSON参数的EXE时出现解析错误
我尝试运行PowerShell脚本,执行一个通过PyInstaller --onedir 打包的Python EXE文件,该EXE需接收一个JSON文件作为参数。已确认JSON内容有效,脚本代码如下:
& "C:\RPA\0001-DHR\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" test.json
但运行时出现如下错误:
At C:\Users\srv_hq-rpa-bot1\AppData\Local\Temp\Robin\f0f3xbjmnlo.tmp.ps1:1 char:75 + ... DHR\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" {"Items":[{"Name": ... + ~~ Unexpected token ':[' in expression or statement. At C:\Users\srv_hq-rpa-bot1\AppData\Local\Temp\Robin\f0f3xbjmnlo.tmp.ps1:1 char:84 + ... dateMarks\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" {"Items":[{"Name":"JAron","File": ... + ~~~~~~~~ Unexpected token ':"JAron"' in expression or statement. At C:\Users\srv_hq-rpa-bot1\AppData\Local\Temp\Robin\f0f3xbjmnlo.tmp.ps1:1 char:92 + ... ateMarks\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" {"Items":[{"Name":"JAron","File":" ... + ~ Missing argument in parameter list. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnexpectedToken
问题原因
PowerShell会把{}识别为**脚本块(script block)**的语法标记,而非普通字符串参数。如果实际执行时传递的是JSON字符串内容(而非文件名),PowerShell会尝试解析JSON中的语法,导致报错。
解决方法
分两种场景处理:
场景1:传递JSON文件路径
确保test.json在当前工作目录,或使用完整路径,同时给路径加双引号避免空格干扰:
& "C:\RPA\0001-DHR\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" "C:\your\full\path\test.json"
场景2:直接传递JSON字符串内容
必须将整个JSON字符串包裹,避免PowerShell解析内部语法:
- 方法1:用单引号包裹(PowerShell中单引号为字面量字符串,不解析内部特殊字符)
& "C:\RPA\0001-DHR\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" '{"Items":[{"Name":"JAron","File":"your-file-path"}]}' - 方法2:转义双引号(用
"替换内部双引号)& "C:\RPA\0001-DHR\DHR_ConsolidateMarks\DHR_ConsolidateMarks.exe" "{""Items"":[{""Name"":""JAron"",""File"":""your-file-path""}]}"
内容的提问来源于stack exchange,提问作者iBeMeltin
相关产品推荐
相关产品推荐

