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?
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 480366
Url: https://administrator.de/contentid/480366
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
1 Kommentar
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
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