未使用Invoke-Expression参数

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

我有一个工作的、简单的批处理文件cmd。

D:\Software\MySoftware.exe --process MyConfig.tuc

当我试图在Powershell中使用Invoke-Expression或调用操作符"& "来复制时,代码执行了,但日志显示它没有接收到开关: --process MyConfig.tuc。

Invoke-Expression "D:\Software\MySoftware.exe --process MyConfig.tuc"

& D:\Software\MySoftware.exe --process MyConfig.tuc

编辑:我发现,如果你传递了.tuc文件的完整路径,命令就会成功。

Invoke-Expression "D:\Software\MySoftware.exe --process D:\Software\MyConfig.tuc"
powershell batch-file
1个回答
0
投票

我的问题是,为什么Invoke-Expression需要配置文件的完整路径,而批处理文件不需要。 正如 @compo 在评论中所说,这可能是由于 PS 或 cmd 在相对路径方面的工作方式的不同。

@compo提出了更中肯的意见,即Start-Process是一个更好的解决方案,我发现它确实如此。 它不仅可以工作,它的开关很适合我的需求,尤其是它Invoke-expression做的-wait是原生不做的(我无法确认它是否可以wait,网上有建议说可以)。

Start-Process -FilePath D:\Software\MySoftware.exe -WorkingDirectory D:\Software  -ArgumentList "--process MyConfig.tuc" -wait
© www.soinside.com 2019 - 2024. All rights reserved.