Powershell 和 Excel - Start-Process -Wait 如果 excel.exe 已经是 运行 则抛出错误

Powershell and Excel - Start-Process -Wait throws error if excel.exe is already running

当 excel.exe 进程已经存在时,Start-Process -Wait 将不起作用。当没有 excel.exe 个实例是 运行 时,该 cmdlet 可以正常工作。但是如果已经有一个实例 运行 它会抛出一个错误。我已经完成了一些故障排除,问题似乎是启动的进程 'nests' 本身进入了现有进程。你会看到新的 excel.exe 将以一个单独的 PID 开始,但在 1-2 秒后这个 PID 消失并且新实例被封装到 excel.exe 实例的现有 PID 中 运行 在调用 cmdlet 之前。

有人对此行为有正确的解释吗?
有人对此有解决方法吗?
欢迎提供所有信息!

谢谢!

这是大多数 Office 程序在 2013 年之后的预期行为(我认为)。由于各种我永远不会知道的原因,Microsoft 决定停止让 Excel、Word 和 PowerPoint(至少)默认启动一个额外的进程。

您的解决方法是传入一个参数,告诉 Excel 打开一个新实例。

Start-Process Excel.exe -ArgumentList "/x" -Wait

这应该会导致您现在看到进程的多个实例。

编辑

如果你想打开一个文件,就这样调用它,你应该不会得到错误:

Start-Process excel.exe -wait -ArgumentList "C:\temp\testxlsx.xlsx /x"