Powershell Screenshot

Mugga

Ensign
Registriert
Juli 2006
Beiträge
140
Hey Leute,

ich bin momentan daran auf einem Rechner automatisiert Screenshots aufzunehmen. Am besten ohne extra Tools. Daher habe ich das folgende PowerShell Skript am laufen:
PowerShell:
[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("C:\temp\PrintScreen.png",([system.drawing.imaging.imageformat]::png));
end
Dieses lasse ich ganz "normal" via Aufgabenplanung alle paar Minuten laufen. Das klappt soweit auch ohne Probleme, jedoch nur so lange man aktiv an diesem Rechner ist.
Auf diesen Rechner wird momentan nur per Remotedesktop zugegriffen. Der Nutzer auf diesem Rechner bleibt jedoch anonsten aktiv angemeldet.

Hat einer ne Idee wie man so etwas sonst noch bewerkstelligen könnte?
 
Grundsätzlich klingt das nach einem xyproblem. Was genau versuchst du denn zu bezwecken? Bei aktiver Benutzung erkenne ich ja noch halbwegs einen Sinn - aber wenn der User eh nichts macht, was willst du dann Screenshotten? Wäre ja immer nur dasselbe.
 
  • Gefällt mir
Reaktionen: Recharging
So richtig hab ich's auch noch nicht verstanden. Aber trotzdem ein Tipp, wird denn die Aufgabe unabhängig von der Benutzeranmeldung ausgeführt (gibt ne checkbox dafür im Task)?
 
In der Aufgabe einstellen, dass sie unabhängig von der Benutzeranmeldung ausgeführt werden soll. Findet man direkt auf dem Tab "Allgemein".
 
Dein Problem ist: Wenn jemand per RDP angemeldet ist, bleibt der lokale Bildschirm im Anmeldebildschirm bzw. wird sogar bei Inaktivität dunkel. Ich vermute also stark, dass dein Script entweder den Anmeldebildschirm anzeigt, gar nichts anzeigt oder sogar auf einen Fehler läuft.

Um dein Problem zu lösen, wäre es hilfreich dieses zu verstehen. Wie kamanu schon sagte, xyproblem.
 
  • Gefällt mir
Reaktionen: Recharging
Danke schon mal für eure Antworten.
Also Sinn/Zweck des Ganzen ist eine "Renderüberwachung". Der besagte Rechner wird zum Rendern benutzt (3dsMax Backburner). Manchmal möchte man halt den Status sehen, wie weit das Rendering ist oder ob es irgendwelche Fehler gibt.

Bisher loggt man sich einfach mit dem "Standardbenutzer" welcher dort angemeldet ist über RDP ein und schaut kurz nach. Das klappt auch ohne Probleme, ich hatte dazu nur die Idee es über einen Screenshot zu lösen welcher einfach direkt in ein entsprechendes Verzeichnis von unserem Webserver gespeichert wird.

Dann könnte man immer direkt über Browser kurz per URL die Seite aufrufen mit dem "aktuellen" Screenshot.
Soviel zur Theorie.

In der Aufgabenplanung habe ich "Nur ausführen wenn Benutzer angemeldet ist". Was ja eigentlich auch der Fall sein sollte, denn die Rendertask laufen auch entsprechend direkt (sind nicht als Dienste oder so eingestellt).
 
  • Gefällt mir
Reaktionen: kamanu
Könnte tatsächlich ein XY Problem gewesen sein :-) Es gibt für Backburner einen Queue Monitor von Autodesk. Habe damit keine Erfahrung, aber hilft dir ja vieleicht.
 
johnyb0y schrieb:
Könnte tatsächlich ein XY Problem gewesen sein :-) Es gibt für Backburner einen Queue Monitor von Autodesk. Habe damit keine Erfahrung, aber hilft dir ja vieleicht.
Den Queue Monitor haben wir schon im Einsatz. Dieser zeigt aber simpel gesagt nur ob ein Job läuft oder fertig ist. Quasi kein Bild vom aktuellen Rendering oder wie lange das einzelne Bild voraussichtlich noch rendert.

Es gibt da durchaus bessere Rendermanager aber diese sind auch sehr teuer und lohnen im Prinzip nicht nur für so eine "Komfortfunktion".
 
Zuletzt bearbeitet:
Zurück
Oben