未使用 Invoke-Expression 参数

Invoke-Expression parameter not being used

我有一个可以工作的简单批处理文件 cmd:

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

当我尝试使用 Invoke-Expression 或调用运算符“&”在 Powershell 中进行复制时,代码执行但日志显示它没有选择开关:--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"

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

@compo 更中肯地观察到 Start-Process 将是一个更好的解决方案,我发现它是。它不仅有效,而且具有非常适合我需要的开关,特别是 -wait ,而 Invoke-expression 本身并没有这样做(我无法确认它是否可以等待,网上有建议它可以)。

Start-Process -FilePath D:\Software\MySoftware.exe -WorkingDirectory D:\Software  -ArgumentList "--process MyConfig.tuc" -wait