none
Bildschirm sperren RRS feed

  • Frage

  • Hallo,

    als "Powershell - Newbie" suche ich mir gerade " 'nen Wolf", ich hoffe mir kann hier jemand etwas weiterhelfen, vielen Dank dafür schonmal im Voraus!

    Folgendes:

    - Ich benutze Windows 7 Starter und Poweshell 4.0 mit so ziemlich allen verfügbaren Erweiterungen.

    - PS-Skripte mit langer Ausführungszeit lasse ich gerne im Hintergrund laufen.

    - Ich bin es gewohnt bei ähnlichen Arbeiten und längeren Pausen den Bildschirm zu sperren.

    - Ich möchte dieses gesperrten Zustand in einem Skript abfragen.

    Es könnte auch sinnvoll sein, diesen Zustand ("sperren") mit Powershell zu aktivieren.

    Also:

    "Bildschirm sperren" mittels Powershell-Skript entweder abfragen oder einleiten.

    Hintergrund:

    Ich würde gerne bei länger dauernden Skripts den Rechner nach deren Beendigung herunterfahren, aber auch nur wenn ich nicht mehr selber am Rechner aktiv bin.

    Eine Verknüpfung des Herunterfahrens mit dem Zustand "Bildschirm gesperrt" scheint mir daher das Mittel der Wahl zu sein!

    ( "Stop-Computer -Force " ist mir bekannt;

    meine Recherchen im Internet zu diesem Thema waren bislang recht enervierend!)

    Vielen Dank,

    Udo

    Mittwoch, 6. Januar 2016 13:28

Antworten

Alle Antworten

  • Mittwoch, 6. Januar 2016 14:10
  • Hallo Udo,

    so funktioniert die Sperrung z. B. lokal:

    function Lock-Workstation {
        c:\windows\system32\rundll32.exe user32.dll, LockWorkStation
    }
    Lock-WorkStation

    LoggedOnStatus:

    function GetRemoteLogonStatus ($computer = 'localhost') { 
    if (Test-Connection $computer -Count 2 -Quiet) { 
        try { 
            $user = $null 
            $user = gwmi -Class win32_computersystem -ComputerName $computer | select -ExpandProperty username -ErrorAction Stop 
            } 
        catch { "Not logged on"; return } 
        try { 
            if ((Get-Process logonui -ComputerName $computer -ErrorAction Stop) -and ($user)) { 
                "Workstation locked by $user" 
                } 
            } 
        catch { if ($user) { "$user logged on" } } 
        } 
    else { "$computer Offline" } 
    } 
     
    GetRemoteLogonStatus


    Best regards,

    David das Neves



    Please vote as helpful and mark as answer if a post helped you.
    This posting is provided "AS IS" with no warranties, and confers no rights.

    Mittwoch, 6. Januar 2016 18:59
  • Hallo "Edocsyl",

    vielen Dank erstmal für die schnelle Antwort!

    Ich bin sehr angetan, war wohl eine gute Idee von mir mich hier zu registrieren!

    Derweil tüftel ich gerade mit den Tipps und PS rum, was auf meiner Maschine etwas mehr Zeit in Anspruch nimmt!

    Die Bewertung deiner Antwort nehme ich deshalb später vor.

    Irgendwie ist es mir jetzt ein wenig peinlich, weil ich über den Inhalt deiner beiden Links früher schonmal "gestolpert" bin, aber ist manchmal so: "Vor lauter Bäumen sieht mancher den Wald nicht mehr!"

    Vielen Dank und beste Grüsse,

    Udo

    Donnerstag, 7. Januar 2016 08:34
  • Hallo David,

    vielen Dank für deine Antwort und deine Mühe!

    Deine Skripte begeistern mich sehr, sehr lobenswert!

    Ich habe nun einiges zu tun um mich hineinzudenken, konnte mir aber nicht verkneifen deine Funktion "

    GetRemoteLogonStatus"

    "

    einmal laufen zu lassen. (-bis jetzt fehlerfrei!)

    Jetzt stehe ich vor der Aufgabe herauszufinden wie diese mit verschiedenen Zuständen arbeitet.

    Dem ersten Eindruck nach prüft sie den "Logon-Status", "Computer Lock" ist aber ein wenig anders.

    Werde jetzt mal nachforschen welche Rückgabewerte noch möglich sind.

    Ich wollte zwar die Beschäftigung mit den WMI-Klassen noch etwas zurückstellen, hatte aber schon die "leise Ahnung" das mir dies kaum gelingen wird!

    Ich hätte noch viel zu plaudern, belasse es jetzt aber erstmal mit dieser Kurzmeldung ...

    Best regards and many thanks,

    Udo

    Donnerstag, 7. Januar 2016 09:34