paedi12
Goto Top

Aufgabe aus Aufgabenplanung während der PC gesperrt ist

Hallo Zusammen

Ich habe ein Powershell Skript geschrieben, welches zuerst eine Abfrage macht, ob ein gewisses Programm läuft. Läuft es noch, dann gibt es einfach eine Meldung aus, welche nichts weiter bewirkt. Wenn es aber nicht mehr läuft startet der Shutdownbefehl und eine Meldung wird angezeigt, dass der PC heruntergefahren wird. Wenn man auf dieser Meldung auf "OK" drückt, wird der Shutdown abgebrochen, wenn nicht, wird der PC halt heruntergefahren.
Jetzt habe ich das mal getestet, was passiert, wenn der PC gesperrt ist (Benutzer ist noch angemeldet --> nur gesperrt!). Das Skript wird ausgeführt, der Shutdown auch aber ich sehe keine Messagebox. Kann man das irgendwie schreiben, dass sie auch im gesperrten Zustand angezeigt wird?

Ich habe dann eine Aufgabe im Aufgabenplaner gemacht, welche dieses Powershell Skript startet.

Danke für eure Antworten.

Gruss Paedi12

Hier noch das Skript.

Add-Type -AssemblyName PresentationFramework
Add-Type -AssemblyName System.Windows.Forms

# Prozess Name festlegen
$ProcessName = "Client"  

$ProcessON = ""  
# Auslesen, ob das Programm bereits ausgeführt wird
$ProcessON = Get-Process | Where-Object {$_.ProcessName -eq $ProcessName}
If($ProcessON -eq $null){

    #Programm geschlossen
    # Wird festgelegt, wie viel Zeit bis zum Herunterfahren bleibt in Sekunden.
    $varSecondsToShutdown = "60"  
    # Sekunden werden in Minuten umgewandelt.
    $varMinutesToShutdown = $varSecondsToShutdown / 60 
    # Die jetztige Zeit + die anzahl Sekunden von der Variable $varSecondsToShutdown werden zusammengerechnet.
    $varTimeToShutdown = (get-date).AddSeconds($varSecondsToShutdown).ToString("HH:mm:ss")   
    # Die Parameter für den Shutdown Befehl werden definiert.
    $varStartShutdownArgs = "-s -f -d p:0:0 -t $varSecondsToShutdown"   
    # Die Parameter für den Abbruch vom Shutdown Befehl werden definiert.
    $varCancelShutdownArgs = "-a"  

    # Der Shutdownbefehl wird gestartet
    Start-Process "shutdown.exe" -ArgumentList $varStartShutdownArgs -NoNewWindow   
    $msgBoxInput =  [System.Windows.MessageBox]::Show("Hallo, dies ist eine automatisch generierte Nachricht. Bitte auf [Ok] klicken, falls Sie noch am Arbeiten sind. Ansonsten wird Ihr PC in $varMinutesToShutdown Minute(n), bzw. um $varTimeToShutdown heruntergefahren.",'Shutdown','Ok','Warning') # Eine Messagebox wird generiert mit dem Text. Wenn man auf OK drück, bricht es den Shutdown ab. Wenn man nichts macht fährt der PC herunter.  

        switch  ($msgBoxInput) {
        
        'Ok' {  

            # Shutdown wird abgebrochen, weil auf OK gedrückt wurde.
            Start-Process "shutdown.exe" -ArgumentList $varCancelShutdownArgs -NoNewWindow  

        }

        }

}

else {

  # Programm offen - Meldung wird angezeigt, dass Benutzer Programm jeden Abend schliessen und den PC herunterfahren sollen.
  $msgBoxInput =  [System.Windows.MessageBox]::Show("Bitte Programm JEDEN Abend bei Feierabend schliessen und PC Herunterfahren!",'Shutdown','Ok','Warning') # Eine Messagebox wird generiert mit dem Text. Wenn man auf OK drück, bricht es den Shutdown ab. Wenn man nichts macht fährt der PC herunter.  

        switch  ($msgBoxInput) {
        
        'Ok' {  

            # Nichts wird gemacht.

        }

        }


}

Content-Key: 3099361968

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

Ausgedruckt am: 29.03.2024 um 06:03 Uhr

Mitglied: DerWoWusste
DerWoWusste 17.06.2022 um 10:19:08 Uhr
Goto Top
Hi.

Wenn Du die msg.exe nutzt, geht das an alle
msg * test
Du wirst das sicherlich auch nativ in PowerShell machen können, aber auf die schnelle nimm einfach msg.exe
Mitglied: Paedi12
Paedi12 17.06.2022 um 10:26:40 Uhr
Goto Top
Hallo DerWoWusste

Danke für deinen Kommentar. Kannst du mir vielleicht schnell helfen, wie msg.exe ein den Text einzubauen, bin eben nicht so fit in Powershell.

Gruss Paedi12
Mitglied: DerWoWusste
DerWoWusste 17.06.2022 um 11:17:44 Uhr
Goto Top
Die msg.exe ist geeignet für Nachrichten, bei denen kein input abgefragt wird. Hm, also doch unpassend hier. Tut mir Leid, müsste ich selbst recherchieren.
Mitglied: Paedi12
Paedi12 17.06.2022 um 12:09:30 Uhr
Goto Top
Ok, kein Problem, kannst dich dann wieder melden, wenn du etwas gefunden hast. Habe leider im Internet noch nichts gefunden, wie man das machen könnte.
Mitglied: ultiman
ultiman 17.06.2022 um 15:44:43 Uhr
Goto Top
Moin,
kann die Powershell Ausgabe irgendwie über das Infocenter auf den Sperrbildschirm gelangen ? nur so ne Idee.
Mitglied: Paedi12
Paedi12 17.06.2022 um 16:25:38 Uhr
Goto Top
Hi ultiman
Das müsste ich noch ausprobieren. Wie genau meinst denn du, dass man das machen könnte?
Gruss
Mitglied: ultiman
ultiman 17.06.2022 um 16:33:16 Uhr
Goto Top
Hi,
da schaue ich selber auch gerade... face-smile bin gerade neugierig. Was mit ps gehen würde wäre das Bild vom Sperrbildschirm zu ändern mit einem Hinweis im Bild sehe ich gerade.
bleibt spannend
Mitglied: ultiman
ultiman 17.06.2022 um 16:46:04 Uhr
Goto Top
Mitglied: DerWoWusste
DerWoWusste 17.06.2022 um 16:51:29 Uhr
Goto Top
Aber ein Toast erfordert keine Bestätigung. Ich denke nicht, dass das einstellbar ist.
Mitglied: Paedi12
Paedi12 20.06.2022 um 07:50:17 Uhr
Goto Top
Guten Tag

Danke für deine Antwort aber wie DerWoWusste schon geschrieben hat, kann man bei einem Toast nichts bestätigen aber ich müsste eben wissen, ob noch jemand am arbeiten ist oder nicht.

@DerWoWusste, hast du noch irgendeine Idee, wie man das lösen könnte?

Gruss Paedi12
Mitglied: DerWoWusste
Lösung DerWoWusste 20.06.2022 um 09:41:05 Uhr
Goto Top
Ich hatte schon gesucht, aber nichts ergooglen können.
Ich wette, dass @colinardo eine Syntax aus dem Ärmel schütteln könnte, sonst bliebe nur folgender Umweg:

Detektiere, ob gesperrt ist, indem du abfragst, ob ein Prozess LogonUI.exe läuft. Wenn ja, bitte den Nutzer, zu entsperren (und gib ihm 60 Sekunden Zeit dafür):

$gesperrt = tasklist | findstr LogonUI.exe
if ($gesperrt -ne $null) 
{
    msg /time:0 * Bitte Bildschirm entsperren, falls Sie noch arbeiten und er gesperrt ist
    timeout 60
}
Start des eigentlichen Skriptes
Mitglied: Paedi12
Paedi12 20.06.2022 aktualisiert um 16:07:39 Uhr
Goto Top
Danke, für dein Bemühen. Ich werde das ausprobieren und dir Rückmeldung geben.

Melde mich am Donnerstag wieder.
Mitglied: Paedi12
Paedi12 30.06.2022 um 07:44:58 Uhr
Goto Top
Hallo @DerWoWusste

Ich habe es versucht und es hat auch geklappt. Vielen Dank für deine Hilfe und noch einen schönen Tag.
Mitglied: DerWoWusste
DerWoWusste 30.06.2022 um 08:16:23 Uhr
Goto Top
Schön, gerne geschehen.