Powershell и Excel - запуск-процесс -Awit выдает ошибку, если Excel.exe уже запущен

Start-Process -Wait не будет работать, если процесс excel.exe уже существует. Если экземпляры excel.exe не запущены, командлет работает нормально. Но если экземпляр уже запущен, он выдаст ошибку. Я выполнил некоторые действия по устранению неполадок, и проблема в том, что запущенный процесс "вкладывает" себя в уже существующий. Вы увидите, что новый файл excel.exe запускается с отдельным PID, но через 1-2 секунды этот PID исчезает, и новый экземпляр становится инкапсулированным в существующий PID экземпляра excel.exe, который выполнялся до вызова командлета.

У кого-нибудь есть правильное объяснение этому поведению?
У кого-нибудь есть обходной путь для этого?
Вся информация приветствуется!

Спасибо!

1 ответ

Решение

Это предполагаемое поведение большинства программ 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"
Другие вопросы по тегам