WMI Object NetConnectionStatus im Loop abfragen!

  • VBScript

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Mono.

    WMI Object NetConnectionStatus im Loop abfragen!

    Hallo alle zusammen,
    ich will das dieses Script durchgehend auf einem Rechner läuft und den Status der Netzwerkkarte überwacht. Wenn der Status 2 ist soll das Script wiederholt werden und wenn der Status 7 ist, dann soll das Script ein Programm schließen.

    So wie ich das Scipt erstellt habe funktioniert es auch, doch ist durch den erneuten aufruf des Scriptes die CPU last recht hoch! Ich würde gerne eine Lösung finden wo die CPU last niedrig bleibt! Mit einer DO Loop schleife habe ich es schon probiert, doch bin ich kein Programmierer und ich habe es einfach nicht geschaft die DO Loop schleife in dieses Script einzubauen. Vielleicht kann mir einer von euch helfen!?

    Hier mein Script:

    Visual Basic-Quellcode

    1. On Error Resume Next
    2. strComputer = "."
    3. Set WSHShell = WScript.CreateObject ("WScript.Shell")
    4. Set objWMIService = GetObject("winmgmts:" _
    5. & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    6. Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter Where NetConnectionID = ""LAN-Verbindung"" ")
    7. For Each objItem in colItems
    8. If objItem.NetConnectionStatus = 7 THEN WSHShell.Run "cmd /c pskill calc.exe"
    9. If objItem.NetConnectionStatus = 2 THEN WSHShell.Run "Script.vbs"
    10. Next

    Visual Basic-Quellcode

    1. On Error Resume Next
    2. strComputer = "."
    3. Set WSHShell = WScript.CreateObject ("WScript.Shell")
    4. Do WHile 1=1 'endlosschleife, ist normal nicht die beste variante, aber mir fällt nix besseres ein.
    5. Set objWMIService = GetObject("winmgmts:" _
    6. & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    7. Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter Where NetConnectionID = ""LAN-Verbindung"" ")
    8. For Each objItem in colItems
    9. If objItem.NetConnectionStatus = 7 THEN WSHShell.Run "cmd /c pskill calc.exe"
    10. 'If objItem.NetConnectionStatus = 2 THEN WSHShell.Run "Script.vbs" falls das der aufruf deines scripts ist, wäre der dann überflüssig
    11. Next
    12. Wscript.sleep 10000 '10000 millisekunden pause, dann erneut durchlaufen, sollte die cpu last minimieren
    13. Loop
    Das ist meine Signatur und sie wird wunderbar sein!