PDF Dateien drucken mit PowerShell

Das Drucken von Dateien mit PowerShell haben wir schon in dem verlinkten Beitrag erklärt. Heute geht es darum, mehrere oder einzelne PDF Dateien drucken zu lassen. Speziell kann man auf einem Standarddrucker oder auf einem speziellen Drucker drucken, der zuvor gewählt werden kann. Wie das mit PowerShell funktioniert, erklären wir hier.

PDF Dateien drucken mit PowerShell

Der häufigste Anwendungsfall ist wohl das automatische Ausdrucken von PDF Dateien. In einem PowerShell Script kann man diesen Prozess automatisieren. Hierbei ist es egal, ob eine oder mehrere Dateien gedruckt werden sollen. Auch kann man wählen, ob PowerShell auf dem Standarddrucker oder auf einem speziell gewählten Drucker ausdrucken soll.

PDF Dateien drucken mit PowerShell

Um alle (PDF) Dokumente zu ermitteln, kann man das PowerShell Cmdlet Get-ChildItem verwendet werden. Mit dem Parameter -Recurse werden auch die Dokumente in den Unterordnern ermittelt:

#read all PDF Files
$pdffiles = Get-ChildItem -Path $OUTPATH -Recurse -File

Standarddrucker

Um die PDF Dateien auf dem Standraddrucker auszudrucken, muss in PowerShell folgender Code verwendet werden:

Start-Process -FilePath $YOURFILE.FullName -Verb Print -PassThru -WindowStyle Hidden | %{sleep 10;$_} | kill

Hier wird der Parameter -Verb Print -PassThru verwendet. Durch Print wird der Standarddrucker verwendet.

Drucker wählen

Möchte man vor dem Drucker einen speziellen Drucker auswählen, müssen die installierten Drucker natürlich erst ermittelt werden. Hierzu wird folgender PS Code verwendet:

$drucker = Get-Printer * | select name | Out-GridView -PassThru

Schön ist hier Out-GridView -PassThru, um den Drucker in einer grafischen Oberfläche auswählen. Der gewünschte Drucker wird dann in der Variable gespeichert, und kann dann im weiteren PowerShell Script verwendet werden.

PowerShell Drucker wählen Out-GridView

Das Drucken auf dem speziell gewählten Drucker funktioniert dann mit PowerShell so:

Start-Process -FilePath $YOURFILE.FullName -Verb PrintTo $drucker.name -PassThru -WindowStyle Hidden | %{sleep 10;$_} | kill

Um den Drucker-Name zu übergeben, werden folgende Parameter benötigt: -Verb PrintTo $drucker.name -PassThru

PowerShell Script: Mehrere Dateien automatisiert drucken

Wenn man alle PowerShell-Schnipsel kombiniert, kann man die PDF Dateien drucken lassen – automatisiert. Hierzu werden folgende Schritte abgearbeitet:

  1. Dateien rekursiv auslesen
  2. Drucker auswählen lassen
  3. Jede PDF Datei drucken mit PowerShell
#read all PDF Files
$pdffiles = Get-ChildItem -Path $OUTPATH -Recurse -File

#select printer
$drucker = Get-Printer * | select name | Out-GridView -PassThru

#if no printer selected
if ($drucker -eq $null){

    Write-Host "Fehler! Kein Drucker gewählt!" -ForegroundColor Red
    sleep 5

    #Funktion verlassen
    return
}


#print each file
foreach ($singlefile in $pdffiles){

    sleep -Milliseconds 100
    
    #Drucken auf speziellen Drucker
    Start-Process -FilePath $singlefile.FullName -Verb PrintTo $drucker.name -PassThru -WindowStyle Hidden | %{sleep 10;$_} | kill

    #Drucken auf Standarddrucker
    #Start-Process -FilePath $singlefile.FullName -Verb Print -PassThru -WindowStyle Hidden | %{sleep 10;$_} | kill

}
Johannes
 

Click Here to Leave a Comment Below 0 comments