Automatisierter Versand eines Screenshots vom Snipping Tool per E-Mail

Melden
  1. Einleitung
  2. Automatisiertes Erstellen eines Screenshots
  3. Versand der Screenshot-Datei per E-Mail
  4. Vollständiges Beispiel-Skript
  5. Automatisierung und Planung
  6. Fazit

Einleitung

Das Snipping Tool ist ein praktisches Windows-Werkzeug, um Screenshots manuell zu erstellen. Für manche Anwendungsfälle kann es jedoch sinnvoll sein, Screenshots automatisiert zu erfassen und anschließend direkt per E-Mail zu versenden. Da das Snipping Tool selbst keine Kommandozeilen- oder API-Unterstützung für eine Automatisierung bietet, muss der Prozess anders realisiert werden. In diesem Text erläutere ich, wie Sie mit Windows-Bordmitteln und etwas Skriptprogrammierung einen Screenshot erstellen und diesen automatisch per E-Mail verschicken können.

Automatisiertes Erstellen eines Screenshots

Da das Snipping Tool kein CLI-Tool ist, eignet sich für die Automatisierung eher das Windows PowerShell-Cmdlet ScreenCapture nicht, da es standardmäßig nicht verfügbar ist, sondern Sie können jedoch mit .NET-Funktionalitäten in PowerShell Screenshots erstellen. Eine typische Methode ist, über ein PowerShell-Skript den aktuellen Bildschirm abzufotografieren und das Bild als Datei zu speichern. Alternativ bieten Tools von Drittanbietern automatischere Möglichkeiten, aber hier gehen wir auf eine native Lösung mit PowerShell ein.

Beispielhaft könnten Sie mit folgendem PowerShell-Skript den gesamten Bildschirm erfassen und als Bilddatei abspeichern:

Add-Type -AssemblyName System.Windows.FormsAdd-Type -AssemblyName System.Drawing

$bmp = New-Object System.Drawing.Bitmap ( ::PrimaryScreen.Bounds.Width, ::PrimaryScreen.Bounds.Height)

$graphics = ::FromImage($bmp)$graphics.CopyFromScreen(0,0,0,0,$bmp.Size)$filepath = "$env:TEMP\screenshot.png"$bmp.Save($filepath, ::Png)$graphics.Dispose()$bmp.Dispose()

$bmp = New-Object System.Drawing.Bitmap ( ::PrimaryScreen.Bounds.Width, ::PrimaryScreen.Bounds.Height)

Dieses Skript erstellt eine PNG-Datei des Primärbildschirms im temporären Verzeichnis.

Versand der Screenshot-Datei per E-Mail

Um die erstellte Bilddatei anschließend per E-Mail zu versenden, können Sie ebenfalls PowerShell verwenden. Hierfür nutzen Sie das Cmdlet Send-MailMessage, mit dem Sie E-Mails inklusive Anhänge versenden können. Sie benötigen einen SMTP-Server, über den die Mail verschickt wird. Das kann z.B. ein Unternehmensserver oder ein öffentlicher SMTP-Server (wie Gmail) sein – hier müssen Sie entsprechend Zugangsdaten, Serveradresse und Port angeben.

Im folgenden Beispiel wird demonstriert, wie Sie eine E-Mail mit dem soeben erzeugten Screenshot anhängen und versenden können:

$smtpServer = "smtp.example.com"$smtpPort = 587$smtpUser = "benutzer@example.com"$smtpPass = "Passwort"$from = "benutzer@example.com"$to = "empfaenger@example.com"$subject = "Automatisch erstellter Screenshot"$body = "Anbei der aktuelle Screenshot."

Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -UseSsl -Credential (New-Object System.Management.Automation.PSCredential($smtpUser,(ConvertTo-SecureString $smtpPass -AsPlainText -Force))) -Attachments $filepath

Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -UseSsl -Credential (New-Object System.Management.Automation.PSCredential($smtpUser,(ConvertTo-SecureString $smtpPass -AsPlainText -Force))) -Attachments $filepath

Ersetzen Sie smtp.example.com, benutzer@example.com, Passwort und empfaenger@example.com durch Ihre tatsächlichen Werte. Wichtig ist, dass der SMTP-Server TLS unterstützt, wenn Sie -UseSsl verwenden. Falls Sie Gmail oder andere Provider nutzen, müssen Sie ggf. ein App-Passwort oder spezifische Sicherheitseinstellungen anpassen.

Vollständiges Beispiel-Skript

Hier ein zusammengefasstes PowerShell-Skript, das den Screenshot erstellt und per E-Mail versendet:

Add-Type -AssemblyName System.Windows.FormsAdd-Type -AssemblyName System.Drawing$width = ::PrimaryScreen.Bounds.Width$height = ::PrimaryScreen.Bounds.Height$bmp = New-Object System.Drawing.Bitmap $width, $height$graphics = ::FromImage($bmp)$graphics.CopyFromScreen(0,0,0,0,$bmp.Size)$filepath = "$env:TEMP\screenshot.png"$bmp.Save($filepath, ::Png)$graphics.Dispose()$bmp.Dispose()$smtpServer = "smtp.example.com"$smtpPort = 587$smtpUser = "benutzer@example.com"$smtpPass = "Passwort"$from = "benutzer@example.com"$to = "empfaenger@example.com"$subject = "Automatisch erstellter Screenshot"$body = "Anbei der aktuelle Screenshot."Send-MailMessage -From $from -To $to -Subject $subject -Body $body ` -SmtpServer $smtpServer -Port $smtpPort -UseSsl `

-Credential (New-Object System.Management.Automation.PSCredential($smtpUser,(ConvertTo-SecureString $smtpPass -AsPlainText -Force))) `

-Attachments $filepath

-Credential (New-Object System.Management.Automation.PSCredential($smtpUser,(ConvertTo-SecureString $smtpPass -AsPlainText -Force))) `

Automatisierung und Planung

Möchten Sie diesen Vorgang regelmäßig ausführen, können Sie das Skript in eine .ps1-Datei speichern und mittels der Windows Aufgabenplanung (Task Scheduler) zeitgesteuert oder bei bestimmten Ereignissen starten lassen. Damit automatisieren Sie die Aufnahme und den Versand von Screenshots komplett.

Beachten Sie aber immer den Datenschutz und die Sicherheit: Screenshots können sensible Daten enthalten, ebenso gilt es, Zugangsdaten sicher zu verwahren oder besser mit einem sicheren Credential-Management zu arbeiten.

Fazit

Obwohl das Snipping Tool keine direkte Automatisierung erlaubt, können Sie mit PowerShell und .NET-Funktionalität Screenshots machen und diese umgehend per E-Mail verschicken. Durch Verwendung von PowerShell-Skripten und einem SMTP-Server lässt sich so eine zuverlässige und flexible Lösung zum automatisierten Screenshot-Versand implementieren.

0
0 Kommentare