2016-05-24 23 views
0

Start-Prozess -Wait funktioniert nicht, wenn excel.exe bereits existiert. Wenn keine excel.exe-Instanzen ausgeführt werden, funktioniert das Cmdlet einwandfrei. Wenn jedoch bereits eine Instanz ausgeführt wird, wird ein Fehler ausgegeben. Ich habe einige Fehlerbehebungen durchgeführt und das Problem scheint darin zu bestehen, dass der gestartete Prozess sich in das vorhandene "einnistet". Sie werden sehen, dass die neue excel.exe mit einer separaten PID beginnt, aber nach 1-2 Sekunden verschwindet diese PID und die neue Instanz wird in die vorhandene PID der excel.exe-Instanz eingekapselt, die vor dem Aufruf des Cmdlet ausgeführt wurde.Powershell und Excel - Start-Prozess -Wait wirft einen Fehler, wenn excel.exe bereits läuft

Jeder hat die richtige Erklärung für dieses Verhalten?
Jeder hat einen Workaround dafür?
Alle Informationen sind willkommen!

Danke!

+0

Bitte geben Sie den Fehler, den Sie in Ihrer Frage bekommen . –

Antwort

0

Dies ist das beabsichtigte Verhalten der meisten Office-Programme nach 2013 (glaube ich). Microsoft hat beschlossen, Excel, Word und PowerPoint (zumindest) aus verschiedenen Gründen, die ich nie kennen werde, standardmäßig einen zusätzlichen Prozess starten zu lassen.

Ihr Workaround dafür ist, ein Argument zu übergeben, das Excel anweist, eine neue Instanz zu öffnen.

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

Dies sollte dazu führen, dass Sie jetzt mehrere Intsancen des Prozesses sehen. enter image description here

EDIT

Wenn Sie eine Datei öffnen möchten es nur nennen diese Art und Weise, und Sie sollten nicht einen Fehler:

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

Hallo Shawn, funktioniert in der Tat, wenn Sie Excel-Prozess ohne -Wart aufrufen. Versuchen Sie, den -Wait-Parameter hinzuzufügen, es wird einen Fehler zurückgeben. –

+0

Es funktioniert nicht für mich, funktioniert gut. –

+0

Entschuldigung, lass mich mich korrigieren. Funktioniert in der Tat, wenn Sie excel.exe Prozess aufrufen, aber nicht beim Aufrufen einer Datei. Versuchen Sie dies, Start-Prozess c: \ temp \ test.xlsx -Wait, wenn Excel.exe bereits ausgeführt wird, gibt einen Fehler zurück. –