Invoke-Expression未将逗号分隔的字符串列表作为单个参数传递给脚本

问题描述 投票:0回答:3

我有一个Powershell脚本,该脚本正在调用批处理脚本(在内部运行Perl),当从我的Powershell脚本调用该脚本时,该脚本无法正确解析参数。情况如下。

当手动调用我的批处理/ perl脚本时

test.cmd -tasks "Task A","Task B","Task C"

一切正常,参数“任务A”,“任务B”,“任务C”被视为一个传递给另一个可执行文件的单元。

但是在使用invoke-expression进行调用时>

$fullCommand = "cmd.exe /C C:\test\test.cmd -tasks  `"Task A`",`"Task B`",`"Task C`";
Invoke-Expression -Command $fullCommand;

批处理脚本认为每个字符串都是一个单独的参数。换句话说,“任务A”是-tasks之后的第一个参数,然后是“任务B”,然后是“任务C”,脚本无法识别该参数。

我可以通过分别传入每个任务名称来解决此问题(例如-Task“ Task A” -Task“ Task B” -Task“ Task C”),但这需要我有额外的逻辑来解析这些任务,将它们转换为数组,然后将其重新转换为字符串,然后传递回另一个可执行文件。

我有一个Powershell脚本,该脚本正在调用批处理脚本(在内部运行Perl),当从我的Powershell脚本调用该脚本时,该脚本无法正确解析参数。情况如下。当...

powershell
3个回答
4
投票

0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.