Pokretanje PowerShell skripte kada se dogodi određeni događaj

Suočio sam se s potrebom pokretanja PowerShell skripti kada se dogodio određeni događaj (Windows Event) tijekom organiziranja prespajanja DHCP-a. Međutim, mislim da može biti mnogo aplikacija. Projurio je po internetu i pronašao članak pod nazivom okidač PowerShell skripta od Windows događaj. (Http://blogs.technet.com/b/wincat/archive/2011/08/25/trigger-a-powershell-script-from-a-windows-event.aspx). Skrećem vam pažnju prijevod ovog članka na ruski jezik.

Ovaj primjer pokazuje kako raditi dvije stvari odjednom. Pokrenite PowerShell skriptu kada se dogodi određeni Windows događaj i TAKOĐE proslijedite potrebne parametre događaja skriptu za pokretanje. Na primjer, koristit ćemo testni događaj koji je generirao program EventCreate iz naredbenog retka.

Pozadina: Ova skripta potrebna je za uklanjanje određene javne mape kada se dogodio određeni događaj (Windows Event). Događaj je zabilježen nakon završetka postupka dodavanja "vodenog žiga" određenoj datoteci. Događaj korišten u ovom primjeru ponavlja standardni format događaja.

Prikazat će se sljedeći koraci:

  • Ručno stvaranje i prebacivanje događaja
  • Korištenje konzole preglednika događaja
  • Promjena zakazanog zadatka za prosljeđivanje parametara događaja u skriptu
  • Pokretanje i pokretanje skripte PowerShell
  • Provjerite postavke

Korak 1: Stvorite zapis događaja koristeći EventCreate

C: \> eventcreate / T INFORMACIJE / SO SomeApplication / ID 1000 / L PRIJAVA / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"

Korak 2: Stvorite novi zadatak u konzoli dnevnika pregleda događaja pomoću kontekstnog izbornika "Priloži zadatak ovom događaju ("pričvrstiti zadatak u ovo događaj... ”)

Pokrenite konzolu Preglednik događaja (eventvwr.msc), pronađite u dnevniku događaja Dnevnici sustava Windows -> primjena Događaj stvoren u prethodnom koraku. Desnim klikom kliknite i odaberite "Priložite zadatak ovom događaju ... "

primjedba. Mogućnosti kreiranja pokretača događaja pomoću ovog izbornika prethodno su raspravljane u članku Okidači za događaje Windows..

Napravite zadatak "Pokretanje programa" sa sljedećim parametrima:

Program / skripta (Program / skripta): PowerShell.exe

Argumenti (Dodavanje argumenata): .\ TriggerScript.ps1 -eventRecordID $ (eventRecordID) -eventChannel $ (eventChannel)

Počnite u (Pokreni u) (možda ćete trebati stvoriti ovu mapu ili usmjeriti na postojeću mapu): c: \ temp

 3. korak: promijenite zadatak za prosljeđivanje detalja o događaju (okidač događaj) i prosljeđivanje parametara u skriptu PowerShell

Unutar rasporeda zadataka prenesite novo kreirani zadatak (u obliku XML datoteke). Desnom tipkom miša kliknite zadatak "Application_SomeApplication_1000" u mapi "Zadaci preglednika događaja" i odaberite "Izvezi ... ".

Koristeći Notepad ili neki drugi uređivač teksta (poželjno je da uređivač podržava uređivanje Unicode-a, poput Notepad-a), dodajte parametre događaja koje je potrebno prenijeti. Parametri događaja predstavljeni u nastavku najčešće se koriste za identifikaciju događaja. Imajte na umu da je čitav čvor a njegova djeca moraju biti dodana u podružnicu EventTriggera.


Događaj / sustav / kanal
Događaj / Sustav / EventRecordID
Događaj / sustav / razina

Ovako:

Iz naredbenog retka pokrenite sljedeće naredbe da biste izbrisali zadatak planera i ponovo ga stvorili pomoću upravo izmijenjene datoteke (ne znam kako izmijeniti zadatke pomoću modificirane XML datoteke).

C: \> schtasks / delete / TN "Zadaci preglednika događaja \ Application_SomeApplication_1000"
C: \> schtasks / create / TN "Zadaci preglednika događaja \ Application_SomeApplication_1000" / XML aplikacija_
SomeApplication_1000.xml

korak 4: stvaranje PowerShell skripta TriggerScript.ps1, koji zove se zadatak raspoređivač

primjedba. Prikazana skripta prima osnovne informacije o zadatku koji ju je pokrenuo. Skripta zatim ispituje Windows Event Log radi drugih detalja o događaju. U našem primjeru, parametri se prenose putem XML-a, ali može se prenijeti bilo koji drugi tekst, pod uvjetom da skripta može ispravno analizirati i prihvatiti. Usput, parametar „eventRecordID“, koji se prosljeđuje skripti, ne smije se miješati s eventID događaja. Vrijednost eventRecordID je redoslijedni redoslijedni broj dodijeljen svim događajima kada su registrirani na svom kanalu (Log'e). Pored toga, eventRecordIDs je jedinstven za određeni kanal (Dnevnik).


# Naziv skripte: TriggerScript.ps1
# Primjer upotrebe (upotrijebite važeći ID koji je pronađen putem XML prikaza događaja gledatelja događaja): powershell. \ TriggerScript.ps1 -eventRecordID 1 -eventChannel aplikacija
#
# Stvorite lažni događaj ili testiranje sa sljedećom naredbom (iz povišenog naredbenog retka):
# eventcreate / T INFORMACIJE / SO SomeApplication / ID 1000 / L PRIJAVA / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
# Prikuplja sve imenovane parametre (svi ostali završavaju u $ Args)
param ($ eventRecordID, $ eventChannel)

$ event = get-winevent -LogName $ eventChannel -FilterXPath "* [System [(EventRecordID = $ eventRecordID)]]"
[xml] $ eventParams = $ event.Message
ako ($ eventParams.Params.TimeStamp)
[datetime] $ eventTimestamp = $ eventParams.Params.TimeStamp
$ eventFile = $ eventParams.Params.InputFile
$ popupObject = new-object -comobject wscript.shell
$ popupObject.popup ("RecordID:" + $ eventRecordID + ", kanal:" + $ eventChannel + ", vremenska oznaka događaja:" + $ eventTimestamp + ", datoteka:" + $ eventFile)

primjedba: Uz pokretanje skripte, zadatak planera može prikazati skočni prozor ili poslati e-mail. Slanje e-mail obavijesti korisno je da vas upozori na rijetke događaje u vašem okruženju. Sličan zadatak može se distribuirati i putem GPO-a (postavke skupnih pravila).

Korak 5: Provjerite postavke generiranjem novog događaja sličnog onome koji je stvoren u koraku 1

C: \> eventcreate / T INFORMACIJE / SO SomeApplication / ID 1000 / L PRIJAVA / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"

Trebali biste vidjeti skočnu poruku kao što je ova:

Niste radili? Provjerite sljedeće:

  • Provjerite događaj u Pregledniku događaja. Možda ćete trebati osvježiti pogled putem izbornika Osvježi ili gumbom F5.
  • Ručno pokrenite skriptu s pravim parametrima i pogledajte moguće pogreške (obratite pažnju na komentare u skripti, s primjerima aplikacija). Dok je skripta "nepotpisana", možda ćete trebati konfigurirati PowerShell da ovo pokrene kao nepotpisano (pogledajte PS> pomoć za pomoć_Execution_Policies).
  • Provjerite je li zadatak u alatu za planiranje zadataka u mapi "Zadaci preglednika događaja" i pogledajte povijest zadatka ("Povijest").