Tamam, bir ağ arızası olması durumunda (örneğin, hangi nedenle olursa olsun bir ağ kablosu çıkarıldığında) bir komut dosyası (powershell veya vbs) çalıştırmaktır.
Bu mümkün mü? tahmin edeceğim ama nasıl?
şerefe
Tamam, bir ağ arızası olması durumunda (örneğin, hangi nedenle olursa olsun bir ağ kablosu çıkarıldığında) bir komut dosyası (powershell veya vbs) çalıştırmaktır.
Bu mümkün mü? tahmin edeceğim ama nasıl?
şerefe
Yanıtlar:
Bunu bir .net uygulamasından yapabilirsiniz, çünkü ağ kablosu çıkarıldığında tetiklemek için kullanılabilecek birkaç kanca vardır, özellikle de teorik olarak Powershell aracılığıyla erişilebilen Shell Bildirimleri, .net tabanlı . Ancak sorun, olayı yakalamak ve bir şeyler yapmak için, olay başlatıldığında uygulamanızın / komut dosyanızın çalışması gerekir.
İsteğinizin sadece, ağ kablosu arka planda çalışan başka bir şey olmadan çıkarıldığında çağrılan bir betiğe sahip olmasını tahmin ediyorum. Bunun bir uygulaması olmadan mümkün olacağını sanmıyorum, daha sonra senaryoyu çalıştıracak bir saplama servisi olsa bile, etkinliğin gerçekleşmesini bekliyor.
Bu, birinin aklıma gelmeyen ustaca bir çözümü olabileceğini söyledi.
Görev zamanlayıcıda, belirli bir olay günlüğe kaydedildiğinde tetiklenecek bir görev oluşturabilirsiniz. Ağ bağlantısı kesildiğinde hangi olay kimliğinin kaydedildiğini bulabilirseniz, bu görevin komut dosyanızı çalıştırmasını sağlayabilirsiniz.
Tamam, başlamak için basit bir Powershell kodu var. IP Adresi yerine DNS adını kullanabileceğinizi unutmayın. {} "Çalışıyor"} bloğunu {} (hiçbir şey yapmayın) için değiştirebilirsiniz, ancak saniyede çok fazla ping atacaktır. Öyleyse bloğun içinde Uyku komutunu kullan. Arıza durumunda yapmanız gereken eylemler için {write "Failure!"} Scriptblock komutunu değiştirin. Bu betiği, adres dizisine sırayla ping atmak için genişletebilir veya ilk kaybolan ping için değil, bir avuç kaybolduktan sonra eyleminizi yapmak için bir sayaç ayarlayabilirsiniz. Farklı başarısız ana bilgisayarlar için farklı işlemler yapmak için bazı case deyimlerini bile kullanabilirsiniz. Kod yazarken daha fazla yardıma ihtiyacınız olup olmadığını sorun.
while ((get-WmiObject Win32_PingStatus -filter "Address='192.168.1.1' ").Statuscode -eq 0) {Write "Working"; Sleep 2};{write "Failure!"}