isarc01
Goto Top

Powershell Script wird nicht komplett abgearbeitet?!

Hallo,

wenn ich das Script direkt per Doppelklick ausführe, wird alles korrekt abgearbeitet. Auch der Druck funktioniert.

Nun ist es, dass ich das Script aus einem Programm ausführen lasse. Es wird ausgeführt, sobald eine PDF welche über den Drucker gescannt im Verzeichnis landet.
Es wird allerdings nur der erste Teil durchgeführt. (Also das kopieren)
Das Drucken der PDF funktioniert nicht. Er öffnet auch den PDF Reader nicht, aber komischer Weise löscht er die Datei dann doch, was ja auch zum Ende des Scripts gehört.

Seltsam..
Den Fehler an sich kann ich nicht definieren, da es ja händisch ausgeführt, komplett funktioniert

Gruß
Andi

PS: Evlt gibt es noch eine einfachere oder bessere Möglichkeit?


foreach($item in (Get-ChildItem -Recurse -Path "C:\Scans\Urkunden\" | Where-Object {$_.Name -like "*GBATrue*.pdf*"}))  
{
    Copy-Item -Path $item.FullName -Destination "C:\Scans\GBA\$(get-date -f yyyyMMddThhmmssZ" ")$($item.Name)"  
}

Start-Sleep -s 5
foreach($item in (Get-ChildItem -Recurse -Path "C:\Scans\Urkunden\" | Where-Object {$_.Name -like "*HRTrue*.pdf*"}))  
{
    Copy-Item -Path $item.FullName -Destination "C:\Scans\HR\$(get-date -f yyyyMMddThhmmssZ" ")$($item.Name)"  
}

# Drucker definieren
$printer = '7835'  
gci "C:\Scans\Urkunden\1print\*.pdf" | %{  
    # starte PDF-Druck via Shell-Verb 'printto' 
    $pdfApp = (start-process $_ -Verb "printto" -PassThru -ArgumentList "$printer").ProcessName  
    # initialer sleep
    sleep(3)
    # loope solange bis Datei freigegeben wurde und lösche sie dann
    while($true){del $_ -Force -EV err -EA SilentlyContinue; If($err){sleep(1)}else{break}}
}

# PDF Applikation beenden
get-process $pdfApp -ErrorAction SilentlyContinue | Stop-Process

Content-ID: 480366

Url: https://administrator.de/forum/powershell-script-wird-nicht-komplett-abgearbeitet-480366.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

Bitboy
Bitboy 01.08.2019 aktualisiert um 17:21:16 Uhr
Goto Top
Hi,

als erste Idee würde ich meinen, das Script läuft dann im "falschen" Userkontext.

Das Programm (ein Systemdienst?) hat eventuell andere Rechte / keinen Druckerzugriff und deswegen druckt da auch nichts.
Während es funktioniert wenn du es ausführst weil du auch den Drucker benutzen darfst.

Edit: Achja, sofern ein Systemdienst das Programm ausführt ist es afaik auch so, dass dieser nicht ohne weiteres mit dem Desktop des Users interagieren kann. Sprich, das PDF-Programm wird zwar ausgeführt, aber man siehts eben nicht weils sozusagen auf dem Desktop des Systemusers ist. BTW machen die meisten Programme das nicht mit weil der Systemuser erst gar keinen Desktop in diesem Sinne hat.

Grüße