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.
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.
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:
- Dateien rekursiv auslesen
- Drucker auswählen lassen
- 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 }