Powershell print pdf in der Aufgabenplanung

Timons

Cadet 4th Year
Registriert
Feb. 2018
Beiträge
88
Hallo my boys and girls !

Ich habe ein Problem: Ein PS Skript soll Daten (PDF) an diverse Drucker schicken. Das klappt auch! Außer wenn ich das Skript in die Aufgabenplanung schiebe. Dann funktioniert alles, AUSSER das öffnen vom Adobe DC.

Es funktioniert alles, wenn ich den Haken bei : "nur ausführen, wenn der Benutzer angemeldet ist" und ich mit dem user, der beim Ausführen hinterlegt ist, angemeldet bin. Es soll aber auch starten wenn ich den Haken bei "unabhängig von der Benutzeranmeldung ausführen" setze

Gibt es eine Möglichkeit wie ich es drucken kann ohne den Acrobat zu starten? oder zumindest ohne Gui?? ich denke das Problem liegt daran, dass der Acrobat "geöffnet" werden muss


Hier die Funktion falls es daran liegen sollte

PowerShell:
$printer1 = "FS-4200DN"
$printer2 = "Kyocera FS-4200DN _2"
$printer3 = "TOSHIBA B-FV4"
$separatingPage = "C:\users\Public\XXXXXXXXX\Empty\emptyFile.pdf"
$separatingLabel = "C:\users\Public\XXXXXXXXXX\Empty\TrennseiteLabel.pdf"
$acrobat = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

$remotePath1 = "C:\Users\Public\XXXXXXXXXXX"
$remotePath = "C:\Users\Public\XXXXXXXXXX\*"
$remotePathXXXXXXXXXXX = "C:\Users\Public\XXXXXXXXXXXXX\XXXXXXXXXXX"
$remotePathXXXXXXXXXXX = "C:\Users\Public\XXXXXXXXXXXX\XXXXXXX"
$remotePathXXXXXXXXXXXXXXXX = "C:\Users\Public\XXXXXXXXXX\XXXXXXXXXXX"

function printPDF ($pfad, $drucker) {
    try {
                
        Get-ChildItem $pfad | ForEach-Object {
           $file = $_.FullName

            $argument =  '/S /T "' + $file + '" "' + $drucker
            #drucken
            Start-Process $acrobat -ArgumentList $argument

            #start-sleep
            Start-Sleep -Seconds 10
          
            #löschen
            remove-item $_.FullName -Force 
            
            write-log "$pfad und $argument starten" 0
        }
    
    }
    catch {
        Write-Log "fehler bei $pfad und $drucker" 2
    }   
}


############################und ein Aufruf##################

try {
    printPDF $remotePathxxxxxxxx $printer1
    
    write-log "print PDF XXXXXXXXXX wurde aufgerufen" 0
}
catch {
    write-log "print PDF XXXXXXXXXXXXXX wurde nicht aufgerufen" 2
}
 
Gibt es bei den Reader auch den Distiller. Darüber wird eigentlich gedruckt (pro Version)
 
Sind das Netzwerkdrucker? Hat das einen Grund, warum die Files über den Adobe müssen? Ich würde die direkt via LPR schicken ansonsten.
 
NameHere schrieb:
Gibt es bei den Reader auch den Distiller. Darüber wird eigentlich gedruckt (pro Version)

Mh wie kann man mit dem drucken? Hast du eventuell ein kleines codebeispiel? Ich finde dazu nichts :freak:
Ergänzung ()

dauerbrutzler schrieb:
Sind das Netzwerkdrucker? Hat das einen Grund, warum die Files über den Adobe müssen? Ich würde die direkt via LPR schicken ansonsten.

Sorryfür meine Unwissenheit (Azubi) aber wie druckt mn per lpr und was ist das? :Dlaut google ist es für Netzwerkdrucker, aberich finde keine Aneitung
 
Das hat mit P(ower)S(hell) erstmal noch nicht viel zu tun (aufpassen, PS plus Drucken gleich PostScript :D ).

Es gibt zwei grundlegende Probleme für dieses Vorhaben, die überwunden werden müssen:
Ad 1, die Aufgabenplanung. Da muß man ein Konto nutzen, was das Batch Logon Privileg hat; im allgemeinen Administratoren oder wem man dieses Privileg selbst zuweist.

Ad 2, wenn man sich nicht interaktiv an Windows anmeldet -- und das tut man, wenn man so einen Batchjob ausführt -- dann darf man keine Fenster auf den Bildschirm zeigen. Nicht nur, daß dieses Fenster niemand zu Gesicht bekommen würde - Windows verbietet dies buchstäblich und solche Applikationen können dann einfach nicht ausgeführt werden.

Du könntest versuchen, mit Start-Process und WindowMode hidden das Ganze ohne Fenster auszuführen, ob das funktioniert wie gewünscht.

Wenn das nicht geht, gibt es irgendwo im Netz PDF-Prozessoren für die Kommandozeile. Hab nur leider grad nicht mehr im Kopf, wie die heißen. Du suchst jeden PDF-Viewer, der zusätzlich über die Kommandozeile gestartet werden kann bzw scriptfähig ist. DC ist das leider nicht wirklich.
 
  • Gefällt mir
Reaktionen: Timons
@RalphS Du schon wieder :3
zu 1. ja das skript funktioniert ja auch. Es wird ohne Fehlermeldung ausgeführt. Die richtigen Berechtigungen wurden vergben. Ich sag jetzt mal der "Admin" ist als Ausführer hinterlegt. Wenn ich auch als Admin angemeldet bin funktioniert alles. Wenn der "Arbeiter" sich anmeldet läuft das ganze Skript ohne Error .... bis auf das öffnen des Acrobats und dem Drucken.


zu 2. ist das sowas wie @NameHere geschrieben hat? Ansonsten ist das genau das was ich auch dachte, aber ich finde nirgendwo einen einzigen Hinweis auf eine Lösung.
Aber dann suche ich mal gezielt nach PDF_Prozessoren <3
 
Ja der Schleppi funktioniert wieder, am Telefon schreiben macht keinen Spaß. :daumen:

Der Distilller... mh? Ich hab damit schon ne ganze Weile nicht mehr gewerkelt, aber war der nicht zum "Konvertiere X in PDF" da? Das wäre ja das exakte Gegenteil von dem, was Du brauchst.

Du müßtest halt etwas finden, daß ein Kommandozeileninterface hat und so automatisiert Dateien drucken kann.
Sagen wir, acrord32 /file <pfad zur pdfdatei> /printer <name der Warteschlange> oder sowas in der Art.

Die Probleme mit Acrobat kenn ich auch. Funktioniert prima... bis man was damit automatisieren will. An der Stelle eignen sich alle anderen PDF-Viewer besser.

Heck, ghostscript für Windows sollte schon das tun was Du willst. Ist sicherlich overkill und sackenschwer zu bedienen, besonders wenn man Kommandozeilen nicht mag, aber es sollte damit gehen.
 
Das freut mich aber :smokin:

acrord32 /file <pfad zur pdfdatei> /printer <name der Warteschlange> -- naja so geht es ja auch mit dem Acrobat- nur dass er sich anscheinend öffnen muss.

Ohweeee naja nächste Woche hab ich Urlaub dann schau mir die Sache mit Ghostscript an -> freu dich auf viele Fragen
 
Berkeley ist ein... echt altes, aber immer noch gängiges Protokoll um Druckjobs im Netz zu bewerkstelligen. Wenn du also Netzwerkdrucker hast, die zufällig auch noch Postscript-Emulation draufhaben (was eigentlich jeder Drucker heute kann) ist die Chance, dass du einfach der Queue den Job (PDF) direkt verpassen kannst, relativ hoch. Viele Treiber, auch die von Kyo haben überlicherweise noch die Option für ein passthrough, dass sich deaktivieren lässt, um damit etwaige Spoolvoreinstellungen zu tätigen (vorgegebenes Duplex etc. pp.)
Man vergebe mir, bin da bisschen raus und weiß nicht, ob sich Netzdrucker via Powershell so ansprechen lassen und es ist Feierabend xD hab also grad 0,0 Lust das zu probieren.
Ansonsten ist es in Windows (?) der LPR-Monitor der als Feature drauf muss, um die (früher immer std. vorhandenen) Tools zum laufen zu bekommen. Und weil ich ein Fan von Standards bin, LPR. Propritär hat jeder, aber was alle haben, ist Port 515 xD
Wenn die Daten erst noch PDF werden müssen (PDF-Reader.. eher nicht?) dann genau was RalphS sagt, Ghostscript ist dein Freund :) - aber der Job muss Trotzdem noch auf die Queue. Theoretisch kannste die auch einfach in die Pipe kopieren xD
 
Zuletzt bearbeitet:
Zurück
Oben