Upload Traffic überwachen > wenn zu gering > batch ausführen


  • Mod

    @DocShoe sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:

    Was SeppJ meint ist, dass dein Skript ja 10 Sekunden lang mit voller CPU Leistung die Daten erfasst. Das ist unnötig und verbraucht sinnlos CPU-Zeit. Um das einzuschränken solltest nach jeder Datenerfassung die CPU kurz abgeben (per Sleep oder so). Wenn du dir das im Task Manager anguckst solltest du einen 10 Sekunden Spike bemerken, wenn dein Skript läuft.

    Das hätte ich zwar auch eingewendet, aber hier war hustbaer schneller.



  • @DocShoe
    Danke für die Erklärung. Dann hab ich jetzt meinen eigenen Wachhund 😃 Danke.
    Tatsächlich habe ich keinen nennenswerten CPU-Ausschlag bei der 10-sekündigen Ausführung der Batch-Datei.

    Das einzige woran ich jetzt gerade noch rumprobiere ist, dass die Datei nicht ausgeführt wird wenn der Befehl taskkill OBS nicht findet, weil es bereits komplett beendet/abgestüzt war. Aber das finde ich 😉 EDIT: habs...



  • Auf die schnelle zusammengegoogelt:

    $obs = Get-Process obs64.exe -ErrorAction SilentlyContinue
    if ($obs) 
    {
       // Prozess lebt noch
       taskkill /f /im obs64.exe
    }
    


  • Dann hab ich jetzt genau was ich wollte 😃
    Vielen Dank nochmal an alle Mithelfenden 😊
    Die Deutsche Krebsforschung wirds freuen - auch wenns ein Tropfen auf den heißen Stein ist...

    Ein kleine unabhängige Frage hätte ich vielleicht noch...
    Die Batch Datei wird ja jetzt vom Taskplaner aller 5 Minuten ausgeführt. Wenn der Stream jetzt also durch den Watchdog neugestartet wird, dann passiert das nur im Hintergrund als Prozess. Es gibt kein OBS- Fenster.
    Ich weiß dass die Option "Unabhängig von der Benutzeranmeldung ausführen" dafür verantwortlich ist.
    Ich kann aber das Häkchen nicht bei "Nur ausführen, wenn der Benutzer angemeldet ist" setzen, weil, dadurch dass ich über Remote Desktop auf den Streaming PC zugreife, der sich beim Beenden des Zugriffs automatisch abmeldet und der Prozess dann einfach gar nicht aufgeführt würde.
    Lässt sich das verborgene OBS irgendwie wieder in den Vordergrund heben?



  • @DocShoe
    Hatte schon was gefunden was funktiont hat.
    Hab einfach als erste Zeile geschrieben:
    $ErrorActionPreference = "Continue"
    Damit gings direkt schon



  • Du könntest versuchen, den Prozess mit Credentials zu starten, das scheint aber etwas Fummelarbeit zu sein.
    Auf Stack Overflow habe ich das hier gefunden, vllt kannste was damit anfangen.

    Edit:
    Käse, bei der Abmeldung wird dann auch der Prozess beendet.

    Das Problem ist, dass es für jeden Benutzer einen virtuellen Desktop gibt, auf dem die Fenster angezeigt werden, die der jeweilige Benutzer erzeugt hat (also eigentlich die Anwendungen, die mit seinem Benutzerprofil gestartet wurden). Da dein Skript ohne Benutzeranmeldung läuft bekommt es einen System-Desktop, auf den du als anderer Benutzer keinen Zugriff hast.



  • @DocShoe
    Ganz unten in deinem Link könnte vielleicht eine Lösung sein?
    Dort steht, dass Dienste mit eingetragenen Benutzeranmeldeinformationen ausgeführt werden können. Nun ist OBS aber kein Dienst, sondern ein Prozess. Lässt sich ein Prozess vielleicht in einen dafür kreierten Dienst packen?
    Könnte das klappen?



  • @dreamer84 sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:

    weil, dadurch dass ich über Remote Desktop auf den Streaming PC zugreife, der sich beim Beenden des Zugriffs automatisch abmeldet

    Man kann die RDP-Session auch nur trennen - dann läuft der Desktop weiter.
    Beim spätern Anmelden bekommt man den auch wieder zu sehen.

    Ein Auto-Login beim Systemstart sollte auch möglich sein, so dass gleich der Desktop zu sehen ist.



  • @DirkB
    Danke für deine Hilfe 🙂
    Den Auto-Login hab ich bereits aktiviert. das funktioniert.
    Wenn ich mit meiner RemoteDesktop Session fertig bin, mach ich einfach nur über das Kreuz oben rechts zu. Ich wüsste jetzt gar nicht, dass es verschiende Möglichkeiten gibt RDP zutrennen/schließen....?



  • @dreamer84 Dann wird die Verbindung nur getrennt. Der Nutzer bleibt weiterhin auf dem Remoterechner angemeldet, man sieht allerdings den Bildschirmschoner.

    Wenn man sich wieder remote (oder auch lokal) anmeldet hat man den Desktop mit den laufenden Applikationen wieder.

    Man kann sich auch noch über das Startmenü des Remoterechners abmelden - dann wird der Nutzer auch ausgelogt.
    Ein Neustart des Remotrechners geht über die GUI nicht. Aber per CMD.



  • @DirkB
    Aber wenn der Remote-Nutzer getrennt ist, ich also die Session über das Kreuz schließe, meldet es sich automatisch ab. Das sehe ich daran, dass er beim wiederverbinden kurz den Anmeldebildschirm zeigt. Da ich automatische Anmeldung aktiviert habe kommt das nur kurz, aber in der Zeit wo der Remote-Nutzer abgemeldet ist, ist in meinem Fall ja auch der Desktop-Nutzer abgemeldet. In diesem Fall würde der Taskplaner nicht arbeiten. Hab ich schon ausprobiert...

    NACHTRAG:
    Ich denke ich werde es einfach statt mit RemoteDesktop mal mit Teamviewer oder Google Remote oder sowas versuchen. Da dürfte er sich nicht abmelden...



  • @dreamer84 sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:

    Aber wenn der Remote-Nutzer getrennt ist, ich also die Session über das Kreuz schließe, meldet es sich automatisch ab.

    Nope. Da wird nur die RDP Verbindung geschlossen. Die lokale Session des Benutzers bleibt weiter bestehen. Sonst würde es auch nicht funktionieren dass OBS weiter läuft wenn du es "normal" (ohne Scheduled Task) startest.

    Das sehe ich daran, dass er beim wiederverbinden kurz den Anmeldebildschirm zeigt.

    Das bedeutet nur dass die lokale Session gesperrt wurde.



  • @dreamer84 sagte in Upload Traffic überwachen > wenn zu gering > batch ausführen:

    @Schlangenmensch
    Vielen Dank dafür.
    Ich habe soeben einen kleinen Betrag an die Deutsche Krebshilfe gespendet.

    @hustbaer
    Danke für deinen Hinweis.
    Was macht ein "sum" Aggregierung?

    Ich meine damit die potentiell mehreren Werte die von (Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesSentPerSec).BytesSentPerSec zurückgegeben werden können zu summieren. (Du bekommst mehrere Werte wenn du mehr als ein Netzwerk-Interface hast.)

    Sollte so gehen:

    $wmi += (Get-WMIObject -Class Win32_PerfFormattedData_Tcpip_NetworkInterface | Select-Object BytesSentPerSec).BytesSentPerSec | Foreach {$sum = 0} {$sum += $_} {$sum}
    

Anmelden zum Antworten