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)
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").