graphical user interface, text, application

Dateien aus einem Verzeichnis per Mail verschicken mit der PowerShell

2dbc0cdf66a34d53b356239eb3a0de88

Heute gibt es mal wieder einen kleinen Artikel nach dem Motto „Wenn das nicht funktioniert, dann mach ich das halt mit der Power Shell“. Öfters gibt es die Anforderung einzelne Dateien in einem Verzeichnis nach der Erstellung per Mail zu verschicken. Ich habe so einen Fall und dachte mir, ich lasse euch Teilhaben.

Warum braucht ich das?

Was ist passiert? Ich habe mir einen neuen Scanner gekauft, da beim Multifunktionsdrucker der Dokumenteneinzug nicht mehr wollte. Nach 6 Jahren und fehlenden Duplexscan dachte ich mir, dass eine Reparatur nicht Zielführend ist. Also habe ich mir einen Epson WorkForce DS-1660W gekauft. Die Gründe für mich waren:

  • WLAN (Kein USB Kabel und von mehreren Geräten nutzbar)
  • Duplexscan
  • OCR
  • Einzug mit bis zu 50 Blatt

Auch Stand dabei das Mailversand unterstützt wird. Leider nicht vom Gerät, sondern nur aus der Software. Für die Epson Netzwerkerweiterung die das auch direkt kann, wollte ich nicht noch 499€ extra ausgeben. Gut, ein kleines Manko.

Leider stellte sich heraus, dass nur Microsoft Office in 32-bit unterstützt wird. Für mich keine Option. Also musste eine andere Lösung her.

Screenshot: Epson Document Capture Pro
Screenshot: Epson Document Capture Pro

Das Programm zu Scannen unterstützt Aufträge, diese können verschiedene Ziel Ordner und Scanprofile haben. Also lege ich mir für die Verschiedenen Mail-Ziele verschiedene Ordner an.

Für was braucht mal einen Mailversand nach dem Scan?

Ich nutze das unter anderem für die Reisekostenabrechnung. Durch die Mail spare ich mir das Hochladen der Belege und brauche die nur auszuwählen.

Ein anderes Anwendungsbeispiel wäre auch eine Anwendung die eine Datei erstellt, und die weitergeleitet werden muss.

Das Power Shell Skript

Nach der Erklärung des „Warum“ und „Wieso“, kommen wir nun zu dem „Wie“.

Zu nächst müssen wir erstmal die Dateien selektieren

$sources = Get-ChildItem $sourcepath -Filter $filetype -Depth 0

Als nächstes kann ganz einfach die Mails verschickt werden und die Datei verschoben werden

Werbung
ForEach ( $source in $sources)
{
$file = $source.FullName
$SubjectM = $Subject + $source.Name
Send-MailMessage -To $To -From $From -Subject $SubjectM -SmtpServer $SmtpServer -Attachments $file -UseSsl
Move-Item -Path $file -Destination $archivepath
}

Was jetzt aber Fehlt, ist die Möglichkeit der SMTP Authentifizierung. Kein Mailserver akzeptiert Mail zum Relay ohne Authentifizierung, von internen die mit IP-Whitelisten arbeiten mal abgesehen.

Also müssen wir die Credentials noch integrieren, doch zuerst die nötigen Vorbereitungen:

$password = ConvertTo-SecureString $smtppw -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($smtpuser, $password)

Als nächstes müssen Sie den Send-MailMessage Befehl noch anpassen

Send-MailMessage -To $To -From $From -Subject $SubjectM -SmtpServer $SmtpServer -Attachments $file -Credential $cred -UseSsl

Natürlich kann man diese Code-Schnipsel noch ordentlich in ein Skript einbinden.

Screenshot: ISE mit sent-files.ps1
Screenshot: ISE mit sent-files.ps1

Das habe ich natürlich gemacht und ist hier als Download.


Download der PowerShell Skripte

Die PowerShell Skripte sind mittlerweile auf GitHub gehostet.

Hinweis zu Programm- und PowerShell Code

Der hier enthaltene Code dient als Beispiel. Ich übernehme keine Garantie, Gewährleistung oder Support für den Code oder Bestandteile. Verwendung des Codes erfolgt auf eigene Gefahr.
Ich empfehle immer sich die Skripte vor der Verwendung genau anzuschauen, was sie wirklich tun.


Ausführen des Skripts als geplante Aufgabe

Am besten das Skript als geplante Aufgabe einrichten. Wichtig ist, dass der Benutzer als den Sie das Skript ausführen Rechte auf die Verzeichnisse hat. Machen Sie sich auch Gedanken über die Ausführungshäufigkeit und Zeiträume. Muss das Skript alle 10 Minuten laufen, auch nachts um 3 Uhr?

Werbung

Zu Anlegen können Sie die GUI oder den Befehl Schtasks nutzen.

Hinweis: Dieser Artikel enthält Amazon-Werbelinks, ich erhalte ein Vergütung für darüber gekaufte Artikel. An den Preisen ändert sich für Sie nichts.

Werbung

Veröffentlicht:

Kategorien:

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

New articles in english

Werbung

Themen

Active Directory Administrative Vorlagen Anleitung AppV5 Autopilot Azure Azure AD ConfigMgr Deployment GPO Gruppenrichtlinien Guide How-To Linux Microsoft Microsoft Intune Office Office365 PowerShell Public Preview SCCM2012R2 SCSM2012R2 ServiceMgr Sicherheit TechNet Windows Windows 10 Windows10 Windows Server 2012 Windows Server 2012R2

Hinweise zum Affiliate-Marketing

Auf diesen Seiten werden auch Affiliate Marketing Links angezeigt. Diese sind meistens an dem kleinen „€“ oder einem „*“ dahinter zu erkennen. Der Betreiber dieser Seite erhält beim Kauf über diesen Link eine Provision, ohne das es den Verkaufspreis beeinflusst. Diese Einnahmen tragen zur Finanzierung der Seite bei.