uschade
Goto Top

Autom. Shutdown teilweise Usergesteuert einrichten

Hallo zusammen,

ich habe folgende Situation:

In einem Computerraum werden die PC's zu den unterschiedlichsten Tages- und Abendzeiten (auch am Wochenende) zu Unterrichtszwecken genutzt. Dabei passiert es leider zu oft, dass der letzte das Licht nicht ausmacht...also dass Rechner nicht heruntergefahren werden und diese dann, wenn es ganz ungünstig kommt, von Freitag bis Montag 24/7 durchlaufen...wenn auch im Energiesparmodus, aber dennoch laufen.

Das ist nicht nur mir von ökonomischer Seite her betrachtet ein Dorn im Auge und hier will ich gerne eine Veränderung haben.

Was ich gerne haben möchte ist ein automatischer Shutdown, der so konzipiert ist dass er

a) Vom User abgebrochen werden kann, bei einer Reaktionszeit zum Abbruch des Prozesses von X Sekunden/Minuten und einem definitiven Shutdown nach 2 Minuten, sollte keine Reaktion vom User erfolgt sein
b) selbige Prozedur nach X Minuten startet, sollte der vorherige Versuch vom User abgebrochen worden sein
c) beim letzten Versuch um 22:00 Uhr dann nur noch eine Warnung erfolgt, dass der PC in 2 Minuten ohne Möglichkeit auf weitere Verschiebung heruntergefahren wird.

22:00 Uhr soll dann wirklich alles aus sein....

Ich hab mir den Befehl shutdown.exe genauer angesehen, aber der gibt das so nicht wirklich her...zumindest habe ich nichts sehen können. Könnte ja sein, dass ich nicht tief genug gegraben habe. In der Aufgabenplanung kann ich zwar verschiedene Optionen aktivieren, aber einen expliziten Dialog mit dem angemeldeten User leider nicht starten. Mit Dialog meine ich bei den ersten Versuchen ein Fenster, welches sich öffnet und der Prozess mit einem Button abgebrochen/verschoben werden kann. Der Versuch um 22:00 Uhr soll dann nur mit einem Hinweisfenster laufen, das etwa 2 Minuten offen bleibt und auch nicht geschlossen werden kann.

Ideen?

Vielen Dank schon mal an alle, die sich hier einbringen wollen face-smile

Grüße
Uwe

Content-ID: 2342224408

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

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

manuel-r
Lösung manuel-r 30.03.2022 aktualisiert um 13:56:36 Uhr
Goto Top
Hallo

Dabei passiert es leider zu oft, dass der letzte das Licht nicht ausmacht...also dass Rechner nicht heruntergefahren werden und diese dann, wenn es ganz ungünstig kommt, von Freitag bis Montag 24/7 durchlaufen...wenn auch im Energiesparmodus, aber dennoch laufen.

Das ist also doch nicht nur bei uns so...

Vom User abgebrochen werden kann, bei einer Reaktionszeit zum Abbruch des Prozesses von X Sekunden/Minuten und einem definitiven Shutdown nach 2 Minuten, sollte keine Reaktion vom User erfolgt sein

Ich habe das bei uns mit einem kleinen Script und einem geplanten Task umgesetzt.
Der Task wird im Benutzerkontext täglich um 20:15, 21:15, 22.15, 23:15 usw ausgeführt und startet das Script. Dieses macht im Grunde nichts anderes als im Benutzerkontext ein shutdown -s -t xxx auszuführen und danach eine Messagebox mit Hinweis anzuzeigen. Ist der User noch aktiv und bestätigt die Box, dann wird ein shutdown -a hinterher geschickt was das Herunterfahren dann abbricht.

Zusätzlich habe ich für unsere Zwecke noch eingebaut, dass für bestimmte Clients nicht versucht wird den Client herunterzufahren. Und da es bei uns vor kommt, dass PCs gewollt durchlaufen, weil irgendwelche Berechnungen laufen kann das Script auch noch prüfen, ob bestimmte Prozesse/Programme laufen und versucht dann ebenfalls nicht den Client herunterzufahren.

Manuel

PS:
Auf die Art werden hier täglich etwa 10-15 Clients heruntergefahren die sonst wohl 24/7 durchlaufen würden.

param (
	[int]$WartezeitInMinuten
)

clear-host
$varMinutesToShutdown = $WartezeitInMinuten
$varComputername = ($env:Computername).ToLower()
$arrExceptionClients = @("client1", "client2")  
$arrExecptionApps = @("*prog1*", "*prog2*")  

write-host "Zeitspanne: $varMinutesToShutdown"  
write-host "Computername: $varComputername"  

if ($arrExceptionClients -contains $varComputername) {
	write-host "Abbruch: Der Hostname $varComputername ist in der Liste der Ausnahmen enthalten"  
	exit
}

foreach ($tempTestApp in $arrExecptionApps) {
	$tempProcesses = get-process $tempTestApp
	$tempProcesses
	$tempProcessesCount = $tempProcesses.Count
	$tempProcessesCount
	if ($tempProcessesCount -gt 0) {
		write-host "Abbruch: Es sind noch $tempProcessesCount Prozesse für $tempTestApp aktiv"  
		exit
	}
}


$varSecondsToShutdown = $varMinutesToShutdown * 60
$varTimeToShutdown = (get-date).AddMinutes($varMinutesToShutdown).ToString("HH:mm:ss")  
$varStartShutdownArgs = "-s -f -d p:0:0 -t $varSecondsToShutdown"  
$varCancelShutdownArgs = "-a"  
$varCancelMessage = "`r`n"+"`r`n"+"Guten Abend"+"`r`n"+"`r`n"+"Ihr Computer wird in $varMinutesToShutdown Minute(n) - also um $varTimeToShutdown Uhr - automatisch heruntergefahren. Falls Sie jedoch tatsächlich noch vor Ihrem Computer sitzen klicken Sie hier jetzt bitte auf 'Ok' um den Vorgang abzubrechen."+"`r`n"+"`r`n"+"Automatisches Runterfahren jetzt abbrechen?"+"`r`n"+"`r`n"  
Start-Process "shutdown.exe" -ArgumentList $varStartShutdownArgs -NoNewWindow  
#[System.Windows.Forms.MessageBox]::Show($CancelMessage)
$NewPopup = New-Object -ComObject WScript.Shell
$Result = $NewPopup.Popup($varCancelMessage, 0,"Achtung !!!", 4096)  
Start-Process "shutdown.exe" -ArgumentList $varCancelShutdownArgs -NoNewWindow  
erikro
erikro 30.03.2022 um 14:12:25 Uhr
Goto Top
Moin,

zum Hintergrund: Ich habe ca. 30 Jahre lang unter anderem mit Schulungen mein Geld verdient. Deshalb ein Kommentar von mir.

Zitat von @Uschade:
Was ich gerne haben möchte ist ein automatischer Shutdown, der so konzipiert ist dass er

a) Vom User abgebrochen werden kann, bei einer Reaktionszeit zum Abbruch des Prozesses von X Sekunden/Minuten und einem definitiven Shutdown nach 2 Minuten, sollte keine Reaktion vom User erfolgt sein

Schlechte Idee. Nehmen wir mal an, Du lässt alle 120 Minuten prüfen, ob der Rechner noch läuft. Nun mache ich nach 119 Minuten Pause. Wir kommen wieder, alle Rechner sind aus und alles ist weg. Nicht gut.

b) selbige Prozedur nach X Minuten startet, sollte der vorherige Versuch vom User abgebrochen worden sein
c) beim letzten Versuch um 22:00 Uhr dann nur noch eine Warnung erfolgt, dass der PC in 2 Minuten ohne Möglichkeit auf weitere Verschiebung heruntergefahren wird.

22:00 Uhr soll dann wirklich alles aus sein....

Auch keine gute Idee. Ich habe zehn Minuten später angefangen. Wir haben gerade eine ganz spannende Frage. Oder warum auch immer. Ich will zehn Minuten überziehen. Geht nicht. Rechner fahren runter.

Ideen?

Ja: Anweisung an die Dozenten, die Rechner am Ende der Sitzung herunterzufahren. Was ich auch schon gesehen habe, war ein zentraler Schlüssel zum Schalten der Stromdosen. Das kann man dann so gestalten, dass man den nur abziehen kann, wenn er auf "Aus" steht.

Liebe Grüße

Erik
Uschade
Uschade 30.03.2022 um 15:08:59 Uhr
Goto Top
Hallo manuel-r,

vielen Dank für deinen Beitrag. Sieht spannend aus, ich werde das testen, muss allerdings nochmal bei unserem RZ nachhaken weil...witzigerweise darf ich als Admin vor Ort trotzdem keine PowerShell-Scripte ausführen...bekomm da eine Fehlermeldung, dass dies aus Sicherheitsgründen unterbunden ist.

Grüße
Uwe
Uschade
Uschade 30.03.2022 um 15:13:49 Uhr
Goto Top
Zitat von @Uschade:

Hallo zusammen,

ich habe folgende Situation:

In einem Computerraum werden die PC's zu den unterschiedlichsten Tages- und Abendzeiten (auch am Wochenende) zu Unterrichtszwecken genutzt. Dabei passiert es leider zu oft, dass der letzte das Licht nicht ausmacht...also dass Rechner nicht heruntergefahren werden und diese dann, wenn es ganz ungünstig kommt, von Freitag bis Montag 24/7 durchlaufen...wenn auch im Energiesparmodus, aber dennoch laufen.

Das ist nicht nur mir von ökonomischer Seite her betrachtet ein Dorn im Auge und hier will ich gerne eine Veränderung haben.

Was ich gerne haben möchte ist ein automatischer Shutdown, der so konzipiert ist dass er

a) Vom User abgebrochen werden kann, bei einer Reaktionszeit zum Abbruch des Prozesses von X Sekunden/Minuten und einem definitiven Shutdown nach 2 Minuten, sollte keine Reaktion vom User erfolgt sein
b) selbige Prozedur nach X Minuten startet, sollte der vorherige Versuch vom User abgebrochen worden sein
c) beim letzten Versuch um 22:00 Uhr dann nur noch eine Warnung erfolgt, dass der PC in 2 Minuten ohne Möglichkeit auf weitere Verschiebung heruntergefahren wird.

22:00 Uhr soll dann wirklich alles aus sein....

Ich hab mir den Befehl shutdown.exe genauer angesehen, aber der gibt das so nicht wirklich her...zumindest habe ich nichts sehen können. Könnte ja sein, dass ich nicht tief genug gegraben habe. In der Aufgabenplanung kann ich zwar verschiedene Optionen aktivieren, aber einen expliziten Dialog mit dem angemeldeten User leider nicht starten. Mit Dialog meine ich bei den ersten Versuchen ein Fenster, welches sich öffnet und der Prozess mit einem Button abgebrochen/verschoben werden kann. Der Versuch um 22:00 Uhr soll dann nur mit einem Hinweisfenster laufen, das etwa 2 Minuten offen bleibt und auch nicht geschlossen werden kann.

Ideen?

Vielen Dank schon mal an alle, die sich hier einbringen wollen face-smile

Grüße
Uwe

Hallo Erik,

auch Dir danke für Deinen Beitrag und folgende Anmerkung dazu:

Das ist nicht die Antwort auf meine Frage. Ich wollte keine Belehrung darüber, was, warum vielleicht eher nicht so toll bei irgendwem ankommen könnte. Das ist hier mit den Lehrkörpern ausgiebig besprochen worden. Ich möchte gerne eine Hilfestellung zur Umsetzung des Plans, der gefasst wurde.

In diesem Sinne
Uwe
manuel-r
manuel-r 30.03.2022 um 15:36:34 Uhr
Goto Top
witzigerweise darf ich als Admin vor Ort trotzdem keine PowerShell-Scripte ausführen...bekomm da eine Fehlermeldung, dass dies aus Sicherheitsgründen unterbunden ist.

Das sollte kein Problem sein:

powershell -ExecutionPolicy Bypass -File <pfadzumscript.ps1>

Manuel
Uschade
Uschade 30.03.2022 um 16:11:23 Uhr
Goto Top
Danke Manule, wir sind das grad intern am klären...ich will mich nciht aus irgendeinem Fenster zu weit rauslehnen...ich lass mir das von unserem RZ absegnen und werd die Zeile dann entsprechend einfügen... wer schreibt, der bleibt. ;)

Grüße