PowerShell Uhrzeitgesteuertes erstellen eines Screenshots

Störtebeker

Newbie
Registriert
Okt. 2020
Beiträge
3
Hallo,

ich muss täglich ein PC überwachen, auf dem Windows 7 läuft. Anstatt dass ich jedes mal dort hinlaufe oder mich mit Teamviewer dort einwähle, suche ich ein Powershell Script, dass jeden Tag um 6.30 Uhr ein Screenshot erstellt und lokal in C:\pfad\screenshot als png mit dem Datum im Namen speichert. Ein Script, dass den Ordner überwacht und neue Dateien per E-Mail verschickt, habe ich schon.
 
  • Gefällt mir
Reaktionen: Fenugi
Und woran scheitert dein bisheriger Versuch dies umzusetzen?
Wo klemmt es genau?

Mit konkreten Infos zu deinen bisherigen Bestrebungen könnte man dir nun auch gezielt helfen.

Oder erwartest du nun ein fertiges Script?
(das übrigens per Suchmaschine in 5 Sekunden zu finden ist, hab's eben ausprobiert)

Gruß
Der Lord
 
  • Gefällt mir
Reaktionen: Fujiyama und konkretor
Das E-Mail Script habe ich aus dem Internet, es war gut erklärt und es mussten nur wenige Parameter verändert werden. Ich habe zu wenig Ahnung von Powershell, als dass ich weniger gut beschriebene Beispiele "lesen" könnte. Wenn man mehr Ahnung hat, als ich könnte man sicher in 5 Sekunden was finden. Beim Versuch mit dem Code von konkretor etwas zu machen, wird mir keine Datei erzeugt. Ich vermute, ich muss nach 'nem fertigen Programm suchen.
 
Störtebeker schrieb:
wird mir keine Datei erzeugt.
Hmm, auch nicht im Ordner c:\temp?

Das Script ist eigentlich selbsterklärend - man muss dazu nur die Kommentare im Script durchlesen. Aber du hast schon Recht, grundlegende Powershell-Kenntnisse sind beim Umgang mit Powershell-Scripts hilfreich (wer hätte es gedacht :D). Also entweder bisschen mit der Sprache beschäftigen - oder alternativ, wie von dir vorgeschlagen, zu einem vollwertigen Programm greifen. :)
Du hast halt explizit nach einem Powershell-Script gefragt, ich ging daher davon aus, dass dir mit solch einem Script dann auch weitergeholfen ist bzw. man dir dabei helfen kann.
 
Einfache Lösung:
Code:
[reflection.assembly]::LoadWithPartialName("System.Drawing") > $null
$Bitmap = New-object System.Drawing.Bitmap 1920,1080
$Size = New-object System.Drawing.Size 1920,1080
$FromImage = [System.Drawing.Graphics]::FromImage($Bitmap)
$FromImage.copyfromscreen(0,0,0,0, $Size,([System.Drawing.CopyPixelOperation]::SourceCopy))
$Bitmap.Save("$env:userprofile\desktop\PrintScreen.png",([system.drawing.imaging.imageformat]::png));

Die Auflösung anpassen, den Pfad anpassen und dann mit der Endung .ps1 speichern. Anschliessend eine Aufgabe erstellen, die das Script immer um 06:30 mit der Powershell ausführt - der komplette Scriptpfad muss angegeben werden! - und in der Befehlszeile zwischen dem Aufruf der Powershell und dem Script ein "-WindowStyle hidden" einfügen, damit das Fenster der Powershell unterdrückt wird.
 
Zuletzt bearbeitet:
Danke für die Hilfe, jetzt geht es.
Habe den Code von areiland verwendet und etwas ergänzt damit der Dateiname ein Zeitstempel hat

Code:
[reflection.assembly]::LoadWithPartialName("System.Drawing") > $null
$MyTime=Get-Date
$TimeStamp=$MyTime.tostring("yyyy.MM.dd")
$Bitmap = New-object System.Drawing.Bitmap 1024,600
$Size = New-object System.Drawing.Size 1024,600
$FromImage = [System.Drawing.Graphics]::FromImage($Bitmap)
$FromImage.copyfromscreen(0,0,0,0, $Size,([System.Drawing.CopyPixelOperation]::SourceCopy))
$Bitmap.Save("C:\pfad\$TimeStamp.png",([system.drawing.imaging.imageformat]::png));
 
  • Gefällt mir
Reaktionen: areiland
Zurück
Oben