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-ID: 308308

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

129813
129813 27.06.2016 um 10:24:11 Uhr
Goto Top
Hi.
$ex = New-Object -Com Excel.Application
$ex.Visible = $true
$ex.Workbooks.Open("c:\cache\1234.xlsm")  
Regards
iceboxyz
iceboxyz 27.06.2016 um 11:24:24 Uhr
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
129813
129813 27.06.2016 aktualisiert um 11:41:22 Uhr
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.
colinardo
Lösung colinardo 27.06.2016 aktualisiert um 18:06:34 Uhr
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
iceboxyz
iceboxyz 27.06.2016 um 18:29:48 Uhr
Goto Top
thx die Variante ist am besten ....
jetzt macht es das was es soll

DANKE
Grüsse Torsten