2016-05-24 6 views
0

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

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

Спасибо!

+0

Просьба представить ошибку вы получаете в вашем вопросе , –

ответ

0

Это предполагаемое поведение большинства программ Office после 2013 года (я думаю). Microsoft решила прекратить выпуск Excel, Word и PowerPoint (по крайней мере) начать дополнительный процесс по умолчанию из-за различных причин, о которых я никогда не узнаю.

Ваше обходное решение для этого - передать аргумент, который указывает Excel на открытие нового экземпляра.

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

Это должно привести к тому, что вы увидите несколько событий процесса. enter image description here

EDIT

Если вы хотите открыть файл, просто назвать это таким образом, и вы не должны получить сообщение об ошибке:

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

Привет, Шон, работает, если вы вызовете процесс excel без -Wait. Попробуйте добавить параметр -Wait, он вернет ошибку. –

+0

Это не для меня, отлично работает. –

+0

Извините, позвольте мне исправить себя. Действительно работает, если вы вызываете excel.exe-процесс, но не при вызове файла. Попробуйте это, Start-Process c: \ temp \ test.xlsx -Wait, когда excel.exe уже запущен, возвращает ошибку. –