h41msh1c0r
Goto Top

Support Screenshot automatisiert generieren und speichern

Hi@All,

An alle Scripter unter uns:

gibt es eine Möglichkeit ohne großen Aufwand einen Screenshot via Hotkey(z.B: die Druck Taste) auf einem Netzlaufwerk abzulegen?

So langsam artet die Rennerei hier im Haus in Stress aus und das nur, weil die Benutzer immer gleich die Fehlermeldungen wegklicken oder diese von Hause aus
nicht stehen bleiben.

Mit einem Script/Tool wo der Benutzer nur noch auf die Taste hauen muss, wäre das super für den der das Problem lösen soll und dem Benutzer.

Drittanbietersoftware steht nicht zur Debatte, da es hier auf den Windows Terminalservern(2k8) nicht in Frage kommt.

Wenn sowas per Script erschlagen werden kann, wäre das super. Hat einer eine Idee?

Grüße

Content-Key: 134564

Url: https://administrator.de/contentid/134564

Printed on: April 25, 2024 at 21:04 o'clock

Member: Tommy70
Tommy70 Jan 28, 2010 at 10:16:52 (UTC)
Goto Top
Hallo,

mit der Powershell könnte man es so lösen.

[reflection.assembly]::LoadWithPartialName("System.Drawing") > $null  
$Bitmap = new-object System.Drawing.Bitmap 1024,768
$Size = New-object System.Drawing.Size 1024,768
$FromImage = [System.Drawing.Graphics]::FromImage($Bitmap)
$FromImage.copyfromscreen(0,0,0,0, $Size,([System.Drawing.CopyPixelOperation]::SourceCopy))
$Bitmap.Save("$env:Temp\PrintScreen.png",([system.drawing.imaging.imageformat]::png));  

Der Aufruf dazu ist z.Bsp.:
C:\>powershell -command " & 'c:\test.ps1'"
Member: H41mSh1C0R
H41mSh1C0R Jan 28, 2010 at 10:48:34 (UTC)
Goto Top
fettes danke,

werde ich ausprobieren.

Gehört die Powershell eigentlich standardmäßig zum Win Server 2k8 oder muss man die bei der Installation explizit ausgewählt haben?

Grüße
Member: Tommy70
Tommy70 Jan 28, 2010 at 10:54:28 (UTC)
Goto Top
Wenn ich nicht falsch liege dann ist sie für den 2008 ein optionales Update. Der 2008 R2 hat sie glaube ich standardmäßig installiert.
Member: CadelPigott
CadelPigott Jan 28, 2010 at 11:15:55 (UTC)
Goto Top
Hi,

für solche Kleinigkeiten greife ich immer wieder gerne auf AutoIT zurück.
Das sähe dann in etwa so aus:

#include <ScreenCapture.au3>
; Erstellt einen Screenshot vom kompletten Bildschirm
_ScreenCapture_Capture(@MyDocumentsDir & "\filename.jpg")
; Erstellt einen Screenshot von einem Bereich
_ScreenCapture_Capture(@MyDocumentsDir & "\filename.jpg", 0, 0, 796, 596)

Falls du Hilfe brauchst dann melde dich.
Gruß
Cadel
Member: H41mSh1C0R
H41mSh1C0R Jan 28, 2010 at 12:33:27 (UTC)
Goto Top
AutoIT ist aber Drittanbieter Software und die kommt nicht in Frage.

Also reine Bordmittel Lösungen sind nur von Interesse, das schrieb ich aber schon im Ausgangspost.

Trotzdem danke für die AutoIT Lösung.

Grüße
Member: H41mSh1C0R
H41mSh1C0R Jan 31, 2010 at 16:02:32 (UTC)
Goto Top
Hi,

ich suche gerade Material zum Thema Powershell.

Hast du eine Art Befehltsreferenz zur Powershell?

suche immo informationen wie ich folgendes auslesen kann:

- Datum/Uhrzeit
 (get-date -date (get-date) -uFormat “%Y-%m-%d”)     <-- vorerst nur datum
- Benutzer
[System.Environment]::UserName
- Auflösung

??

Diese Daten sollen dann in dem Namen der Bilddatei einfließen.

Jetzt habe ich mir gedacht ich baue mit den einzelnen Bestandteilen den String zusammen:
$Savepfad = "$env:Temp\"&Today&"_"&USERNAME_AKTUELL&"_"&".png"  
Leider geht das mit & nicht.

=(

Grüße


EDIT:
$Today = (get-date -date (get-date) -uFormat “%Y-%m-%d_”);
$USERNAME_AKTUELL = [System.Environment]::UserName

[reflection.assembly]::LoadWithPartialName("System.Drawing") > $null   
$Bitmap = new-object System.Drawing.Bitmap 1680,1050 
$Size = New-object System.Drawing.Size 1680,1050 
$FromImage = [System.Drawing.Graphics]::FromImage($Bitmap) 
$FromImage.copyfromscreen(0,0,0,0, $Size,([System.Drawing.CopyPixelOperation]::SourceCopy)) 

$Bitmap.Save("$env:Temp\"+(get-date).tostring("yyyy-MM-dd_HH.ss")+"_"+[System.Environment]::UserName+".png" ,([system.drawing.imaging.imageformat]::png));  

Wenn ich nun versuche $Today und $USERNAME_AKTUELL in die Bitmap.Save Zeile einzufügen kracht es. Trage ich das direkt ein klappt das wunderbar. Nun muss ich nur noch die Auflösung hinbekommen, denn wir haben Desktops mit unterschiedlichen Auflösungen.
Member: H41mSh1C0R
H41mSh1C0R Jan 31, 2010 at 18:07:04 (UTC)
Goto Top
Fertig fürs erste. =)
# Definitionen
$Today 			= (get-date).tostring("yyyy-MM-dd_HH.mm");  
$USERNAME_AKTUELL 	= [System.Environment]::UserName

# Auflösung holen
[Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
$res = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds 

# Bild speichern vorbereiten
[reflection.assembly]::LoadWithPartialName("System.Drawing") > $null   
$Bitmap 		= new-object System.Drawing.Bitmap $res.Width,$res.Height 
$Size 			= New-object System.Drawing.Size $res.Width,$res.Height
$FromImage 		= [System.Drawing.Graphics]::FromImage($Bitmap) 
$FromImage.copyfromscreen(0,0,0,0, $Size,([System.Drawing.CopyPixelOperation]::SourceCopy)) 

# Bild speichern <Datum> <Zeit> <Benutzer>.<Dateiendung>
$Bitmap.Save("$env:Temp\"+$Today+"_"+$USERNAME_AKTUELL+".png",([system.drawing.imaging.imageformat]::png));  
Jetzt muss ich nur noch den Pfad anpassen, so das auf das Netzlaufwerk gespeichert wird. =)