none
Scheduled Task mit Powershell zeitweise blockieren RRS feed

  • Question

  • Guten Tag,

    ich habe eine Frage zur Aufgabenplanung. 
    Ich habe ein kurzes PowerShell-Skript geschrieben, welches alle Clients über das SCCM ausgerollt wöchentlich Samstags morgens herunterfährt. Nun gibt es aber ein paar Ausnahmen von Clients die am Wochenende Berechnungen durchlaufen lassen.
    Ich würde gerne einen Mechanismus einbauen, der abfragt ob ein Client gerade aktiv arbeitet bzw. Prozesse laufen die keine Systemprozesse sind. Heißt für diese Rechner möchte ich das Skript zeitweise (falls mal an einem Wochenende was durchlaufen muss) blockieren. Gibt es da etwas?
    Falls nicht, hättet ihr andere Lösungsmöglichkeiten? Bei über 1000 Clients ist das etwas schwierig die Exceptions vorher zu definieren.

    Mit Idle dürfte das ja nicht funktionieren..
    Die Ausnahme für bestimmte Programme geht auch nicht, da es verschiedene Möglichkeiten gibt (Programme, Datenbankabfragen etc.)

    Beste Grüße,
    Deanna94


    • Edited by Deanna94 Monday, August 5, 2019 9:25 AM
    Monday, August 5, 2019 8:54 AM

Answers

  • Evtl würde es ja auch helfen zu prüfen, ob ein User angemeldet ist? Oder ist selbst das kein (gutes) Kriterium? Dann anders herum gefragt: wie würdest Du diesen Check denn manuell / händisch durchführen? Wenn die Frage beantwortet ist kannst Du dir Gedanken machen, wie man das automatisieren kann.

    Torsten Meringer | https://blog.meringer.de/

    Tuesday, August 13, 2019 2:49 PM
    Answerer
  • Per Get-Process die aktuelle Liste der Prozesse laden und die Systemuser (SYSTEM, SERVICE, Dienste, ...) ausblenden.
    Oder die Positivprüfung: prüfen ob der User im AD vorhanden ist, falls ja, Computer nicht bearbeiten.

    https://www.powershellbros.com/get-process-remotely-for-user-using-powershell/

    Monday, August 5, 2019 10:24 AM
  • Moin,

    am einfachsten ist es, Du implementierst die Abfrage- und Ausnahmenlogik im Script selbst. Es läuft ja schon als SYSTEM, kann sich also Überblick über die laufenden Prozesse verschaffen, und falls nichts Verdächtiges läuft, den Reboot durchführen.

    Wenn Du darüber reporten möchtest, dann kannst Du ja eigene Return Codes zurück liefern, je nachdem, ob ein Reboot versucht oder wg. Aktivität ausgelassen wurde.


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Monday, August 5, 2019 8:13 PM

All replies

  • Per Get-Process die aktuelle Liste der Prozesse laden und die Systemuser (SYSTEM, SERVICE, Dienste, ...) ausblenden.
    Oder die Positivprüfung: prüfen ob der User im AD vorhanden ist, falls ja, Computer nicht bearbeiten.

    https://www.powershellbros.com/get-process-remotely-for-user-using-powershell/

    Monday, August 5, 2019 10:24 AM
  • Moin,

    am einfachsten ist es, Du implementierst die Abfrage- und Ausnahmenlogik im Script selbst. Es läuft ja schon als SYSTEM, kann sich also Überblick über die laufenden Prozesse verschaffen, und falls nichts Verdächtiges läuft, den Reboot durchführen.

    Wenn Du darüber reporten möchtest, dann kannst Du ja eigene Return Codes zurück liefern, je nachdem, ob ein Reboot versucht oder wg. Aktivität ausgelassen wurde.


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Monday, August 5, 2019 8:13 PM
  • Evtl würde es ja auch helfen zu prüfen, ob ein User angemeldet ist? Oder ist selbst das kein (gutes) Kriterium? Dann anders herum gefragt: wie würdest Du diesen Check denn manuell / händisch durchführen? Wenn die Frage beantwortet ist kannst Du dir Gedanken machen, wie man das automatisieren kann.

    Torsten Meringer | https://blog.meringer.de/

    Tuesday, August 13, 2019 2:49 PM
    Answerer