Čelil som potrebe spustiť skripty PowerShell, keď sa pri organizovaní zlyhania protokolu DHCP vyskytla určitá udalosť (udalosť Windows). Myslím si však, že existuje veľa aplikácií. Prehrabovalo sa po sieti a našiel článok s názvom spúšť PowerShell skript z windows udalosť. (Http://blogs.technet.com/b/wincat/archive/2011/08/25/trigger-a-powershell-script-from-a-windows-event.aspx). Upozorňujem na preklad tohto článku do ruštiny.
Tento príklad ukazuje, ako urobiť dve veci naraz. Keď sa vyskytne konkrétna udalosť systému Windows, spustite skript PowerShell a ALSO taktiež odovzdajte potrebné parametre udalosti do skriptu, ktorý sa má spustiť. Použijeme napríklad testovaciu udalosť vygenerovanú programom EventCreate z príkazového riadku.
Pozadie: Tento skript bol potrebný na vyčistenie konkrétneho verejného priečinka, keď sa vyskytla konkrétna udalosť (udalosť Windows). Udalosť bola zaznamenaná po dokončení procesu pridania „vodoznaku“ do konkrétneho súboru. Udalosť použitá v tomto príklade opakuje štandardný formát udalosti.
Zobrazia sa nasledujúce kroky:
- Manuálne vytváranie a prepínanie udalostí
- Používanie konzoly Zobrazovač udalostí
- Zmena naplánovanej úlohy na odovzdanie parametrov udalosti do skriptu
- Spustenie a spustenie skriptu PowerShell
- Overte nastavenia
Krok 1: Vytvorte záznam udalostí pomocou EventCreate
C: \> eventcreate / T INFORMÁCIE / SO SomeApplication / ID 1000 / L APLIKÁCIA / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
Krok 2: Vytvorte novú úlohu v konzole protokolu prezerania udalostí pomocou kontextovej ponuky „Pripojiť úlohu k tejto udalosti (“priložiť úloha na toto udalosť... “)
Spustite konzolu Prehliadač udalostí (eventvwr.msc), nájdete v denníku udalostí Denníky systému Windows -> prihláška Udalosť vytvorená v predchádzajúcom kroku. Kliknite pravým tlačidlom myši a vyberte možnosť „Pripojiť úlohu k tejto udalosti ... "
poznámka. Možnosti vytvorenia spúšťačov udalostí pomocou tejto ponuky boli predtým diskutované v článku Spúšťače udalostí systému Windows..Vytvorte úlohu „Spustiť program“ s nasledujúcimi parametrami:
Program / skript (Program / skript): PowerShell.exe
Argumenty (pridať argumenty): .\ TriggerScript.ps1 -eventRecordID $ (eventRecordID) -eventChannel $ (eventChannel)
Začať v (Začať v) (možno budete musieť vytvoriť tento priečinok alebo ukázať na existujúci priečinok): c: \ temp
Krok 3: Zmeňte úlohu a odovzdajte podrobnosti o udalosti (spúšť udalosť) a odovzdanie parametrov skriptu PowerShell
Do Plánovača úloh odovzdajte novovytvorenú úlohu (ako súbor XML). Pravým tlačidlom myši kliknite na úlohu „Application_SomeApplication_1000“ v priečinku „Úlohy prehliadača udalostí“ a vyberte „Exportovať ... ".
Pomocou programu Poznámkový blok alebo iného textového editora (je žiaduce, aby editor podporoval úpravu Unicode, napríklad Poznámkový blok), pridajte parametre udalosti, ktoré je potrebné preniesť. Parametre udalosti uvedené nižšie sa najčastejšie používajú na identifikáciu udalosti. Všimnite si, že celý uzol a jeho deti musia byť pridané do vetvy EventTrigger.
Udalosť / systém / kanál
Event / System / EventRecordID
Udalosť / systém / úroveň
Takto:
Z príkazového riadka spustite nasledujúce príkazy, aby ste odstránili úlohu plánovača a vytvorili ju pomocou práve zmeneného súboru (neviem, ako upraviť úlohy pomocou upraveného súboru XML).
C: \> schtasks / delete / TN "Task Viewer Tasks \ Application_SomeApplication_1000"
C: \> schtasks / create / TN "Task Viewer Tasks \ Application_SomeApplication_1000" / XML Application_
SomeApplication_1000.xml
krok 4: stvorenie PowerShell skript TriggerScript.ps1, ktorý sa volá prideľovanie plánovač
poznámka. Uvedený skript dostáva základné informácie o úlohe, ktorá ho spustila. Skript potom odošle denník udalostí systému Windows a zobrazí ďalšie podrobnosti o udalosti. V našom príklade sú parametre prenášané prostredníctvom XML, ale je možné prenášať akýkoľvek iný text za predpokladu, že skript dokáže správne analyzovať a akceptovať. Mimochodom, parameter „eventRecordID“, ktorý sa odovzdáva do skriptu, by sa nemal zamieňať s eventID udalosti. Hodnota eventRecordID je poradové číslo sekvencie priradené všetkým udalostiam, keď sú zaregistrované vo svojom kanáli (Log'e). EventRecordIDs je navyše jedinečný pre konkrétny kanál (Log).
# Názov skriptu: TriggerScript.ps1
# Príklad použitia (použite platné ID nájdené prostredníctvom zobrazenia udalosti XML v prehliadači udalostí): powershell. \ TriggerScript.ps1 -eventRecordID 1 -eventChannel Application
#
# Vytvorte falošnú udalosť alebo testovanie pomocou nasledujúceho príkazu (zo zvýšeného príkazového riadka):
# eventcreate / T INFORMÁCIE / SO SomeApplication / ID 1000 / L APLIKÁCIA / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
# Zhromažďuje všetky pomenované parametre (všetci skončia v $ Args)
param ($ eventRecordID, $ eventChannel)
$ event = get-winevent -LogName $ eventChannel -FilterXPath "* [System [(EventRecordID = $ eventRecordID)]]"
[xml] $ eventParams = $ event.Message
if ($ eventParams.Params.TimeStamp)
[datetime] $ eventTimestamp = $ eventParams.Params.TimeStamp
$ eventFile = $ eventParams.Params.InputFile
$ popupObject = new-object -comobject wscript.shell
$ popupObject.popup ("RecordID:" + $ eventRecordID + ", Channel:" + $ eventChannel + ", Timestamp:" + $ eventTimestamp + ", File:" + $ eventFile)
Krok 5: Overte nastavenia vygenerovaním novej udalosti podobnej udalosti vytvorenej v kroku 1
C: \> eventcreate / T INFORMÁCIE / SO SomeApplication / ID 1000 / L APLIKÁCIA / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
Mali by ste vidieť kontextové okno správy, ako je táto:
Nepracovali ste? Skontrolujte nasledujúce:
- Vyhľadajte udalosť v prehliadači udalostí. Možno bude potrebné obnoviť zobrazenie prostredníctvom ponuky Obnoviť alebo pomocou tlačidla F5.
- Manuálne spustite skript so skutočnými parametrami a pozrite sa na možné chyby (venujte pozornosť poznámkam v skripte, s príkladmi aplikácií). Aj keď je skript „nepodpísaný“, možno bude potrebné nakonfigurovať PowerShell, aby sa spustil ako nepodpísaný (pozri PS> get-help about_Execution_Policies).
- Uistite sa, že úloha je v Plánovači úloh v priečinku Úlohy prehliadača udalostí a pozrite sa na históriu úlohy („História“)..