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"