W WMI istnieje takie zagadnienie jak kwerendy zdarzeń WMI. Istnieją trzy rodzaje kwerend zdarzeń WMI:

  • zdarzenia wewnętrzne,
  • zewnętrzne zdarzenia
  • zdarzenia timera.

W skrócie postaram się przedstawić pierwszy z nich, czyli wewnętrzne zdarzenia które używane są do monitorowania zasobów reprezentowanych przez klasy w repozytorium CIM. Innym słowy, wewnętrzne zdarzenia występują w odpowiedzi na zmiany w standardowym modelu danych WMI. . WMI tworzy zdarzenia wewnętrzne dla obiektów przechowywanych w repozytorium WMI.

Najbardziej przydatne klasy wewnętrznych zdarzeń WMI:

__InstanceCreationEvent

Ta klasę używamy, gdy chcemy, aby otrzymać powiadomienie o tworzeniu instancji Na przykład, możemy użyć tej klasy gdy chcemy otrzymać powiadomienie za każdym razem o zdarzeniu utworzenia nowego procesu.

__InstanceDeletionEvent

Tą klasę używamy gdy chcemy otrzymać powiadomienie o usunięciu instancji. Analogicznie jak powyżej z tą różnicą że otrzymamy powiadomienie o każdym zakończonym procesie.

__InstanceModificationEvent

Ta klasa natomiast jest używana gdy chcemy monitorować zmiany na istniejącej instancji lub zasobie. Na przykład możemy użyć tej klasy gdy chcemy przekazać powiadomienie o zdarzeniu gdy wykorzystanie procesora wykracza poza próg określony przez zapytanie.

Ogólna składnia WQL dla wewnętrznych zdarzeń WMI:

W powyższej składni większość słów kluczowych jest znanych z SQL, oprócz słowa WITHIN które jest używane do określenia interwału sondowania dla zdarzeń. Można powiedzieć również że jest to  maksymalny odstęp w czasie jaki musi minąć zanim powiadomienie o zdarzeniu zostanie dostarczone.

Wartość określona jest jako liczba  w sekundach i jest liczbą zmienną przecinkową. Więc możemy określić wartości mniejszą niż jedna sekunda, trzeba pamiętać jednak że mniejszy niż jedna sekunda np. 0.2 może być przyczyną spowolnienia systemu z względu na intensywne wykorzystywanie zasobów przez zapytanie.

Rejestrując dwa zdarzenia możemy w prosty sposób monitorować podłączanie i odłączanie  urządzeń przenośnych, tworząc prosty dziennik zdarzeń w pliku tekstowym.

Na końcu warto wspomnieć o poleceniu Get-Job  którym możemy pobrać wszystkie zarejestrowane zdarzenia WMI, natomiast poleceniem Remove-Job możemy je usunąć.

Mateusz Nadobnik

Z pasją poświęcam czas na zdobywanie wiedzy w zakresie szeroko rozumianej Data Platform. Zachwycony językiem skryptowym Windows PowerShell. Swoją wiedzę, doświadczenia i spostrzeżenia opisuję na blogu.

read more