iceboxyz
Goto Top

Powershell Fehler beim Start von zweitem Process

Hallo zusammen,

ich habe mir ein Scrip geschrieben, das auf das speichern von Excel wartet und dann ein paar Dingen noch abarbeitet.
Das ganze funktioniert wunder bar, wenn Excel nicht gestartet ist.
Wenn Excel bereits gestartet ist bekomme ich beim Start dieses Parameters folgenden Fehler.

$path2 = "c:\cache\1234.xlsm"  
Start-process $path2 -PassThru -Wait

Start-process : Dieser Befehl kann nicht vollständig ausgeführt werden, da das System nicht alle erforderlichen Informationen finden kann.
In D:\SCRIPTE\liste.ps1:34 Zeichen:1
+ Start-process $path2 -PassThru -Wait
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

Weiß jemand wie man Power Shell dazu bewegen kann auch mehrfach Prozesse zu starten.
Fehlt mir da noch ein Parameter oder ist der Aufruf für den Prozess generell der Falsche ?

Danke

Grüße Torsten

Content-Key: 308308

Url: https://administrator.de/contentid/308308

Printed on: April 19, 2024 at 02:04 o'clock

Mitglied: 129813
129813 Jun 27, 2016 at 08:24:11 (UTC)
Goto Top
Hi.
$ex = New-Object -Com Excel.Application
$ex.Visible = $true
$ex.Workbooks.Open("c:\cache\1234.xlsm")  
Regards
Member: iceboxyz
iceboxyz Jun 27, 2016 at 09:24:24 (UTC)
Goto Top
THx

hab ich ausprobiert funktioniert nur hast du noch eine Ahnung wie ich den
waiting Parameter noch aktive bekomme.

so funktioniert es nicht ...
$ex = New-Object -Com Excel.Application
        $ex.Visible = $true
        $ex.Workbooks.Open("$path2")  
        $ex.WaitForExit()

grüsse Torsten
Mitglied: 129813
129813 Jun 27, 2016 updated at 09:41:22 (UTC)
Goto Top
$ex.WaitForExit()
This cannot work because $ex is an Excel COM object, not a process object!
Use get-pocess to filter out the process.
With $ex.hwnd you get the MainWindowHandle ID.
Member: colinardo
Solution colinardo Jun 27, 2016 updated at 16:06:34 (UTC)
Goto Top
Hallo Torsten,
den zugehörigen Prozess des gestarteten Excel-COM-Object (Variable: $ex) erhältst du so:
get-process | ?{$_.MainWindowHandle -eq $ex.Hwnd}
Aber besser du machst es so: Statt als Argument das Excel Dokument selber an Start-Process zu übergeben mach es so:
Start-Process "EXCEL.EXE" -Argumentlist "c:\cache\1234.xlsm" -wait -passthru  
Dann wird jeweils eine neue Excel-Instanz gestartet anstatt eine vorhandene zu kapern.

Grüße Uwe
Member: iceboxyz
iceboxyz Jun 27, 2016 at 16:29:48 (UTC)
Goto Top
thx die Variante ist am besten ....
jetzt macht es das was es soll

DANKE
Grüsse Torsten