A DHCP feladatátvétel megszervezése során egy bizonyos esemény (Windows Event) esetén a PowerShell parancsfájlok futtatásának szükségem volt. Úgy gondolom azonban, hogy sok alkalmazás létezik. Meghökkent az interneten, és talált egy cikket ravasz egy PowerShell forgatókönyv -tól egy A windows esemény. (Http://blogs.technet.com/b/wincat/archive/2011/08/25/trigger-a-powershell-script-from-a-windows-event.aspx). Felhívom a figyelmünkre a cikk orosz nyelvre történő fordítását.
Ez a példa bemutatja, hogyan lehet két dolgot egyszerre csinálni. Futtassa a PowerShell parancsfájlt, amikor egy adott Windows esemény bekövetkezik, és a szükséges eseményparamétereket is átadja a futtatni kívánt parancsfájlnak. Például egy teszt eseményt fogunk használni, amelyet a program generált EventCreate a parancssorból.
Háttér: Erre a szkriptre egy adott nyilvános mappa egy adott esemény (Windows esemény) bekövetkeztének törléséhez volt szükség. Az eseményt rögzítették, miután befejezték a "vízjel" hozzáadását egy adott fájlhoz. A példában használt esemény megismétli a standard eseményformátumot.
A következő lépések jelennek meg:
- Kézi eseménykészítés és váltás
- Az Eseménynapló konzol használata
- Ütemezett feladat megváltoztatása az esemény paramétereinek átadására egy szkripthez
- A PowerShell szkript futtatása és futtatása
- Ellenőrizze a beállításokat
1. lépés: Hozzon létre egy eseménybejegyzést a segítségével EventCreate
C: \> eventcreate / T INFORMÁCIÓK / SO SomeApplication / ID 1000 / L ALKALMAZÁS / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
2. lépés: Hozzon létre egy új feladatot az eseménymegtekintési napló konzolján a „Csatlakoztasson ehhez az eseményhez (“csatolása feladat hogy ezt esemény... ”)
Indítsa el a konzolt Eseménynapló (eventvwr.msc), megtalálja az eseménynaplóban Windows naplók -> kérelem Az előző lépésben létrehozott esemény. Kattintson a jobb gombbal és válassza a „Csatolja a feladatot ehhez az eseményhez ... "
megjegyzés. Az eseményindítók létrehozásának lehetőségeit a menü segítségével korábban tárgyalták a Windows eseményindítók című cikkben..Hozzon létre egy „Program indítása” feladatot a következő paraméterekkel:
Program / szkript (Program / szkript): PowerShell.exe
Érvek (érvek hozzáadása): .\ TriggerScript.ps1 -eventRecordID $ (eventRecordID) -eventChannel $ (eventChannel)
Indítás (Indítás) (lehet, hogy létre kell hoznia ezt a mappát, vagy mutatnia kell egy meglévő mappát): c: \ temp
3. lépés: Változtassa meg a feladatot az esemény részleteinek továbbításához (ravasz esemény) és a paraméterek átadása a szkriptnek PowerShell
Töltse fel az újonnan létrehozott feladatot a Feladat ütemezőn (XML fájlként). Kattintson a jobb gombbal az "Application_SomeApplication_1000" feladatra az "Event Viewer Tasks" mappában, és válassza a "Exportálás ... ".
Jegyzettömb vagy más szövegszerkesztő használatával (kívánatos, hogy a szerkesztő támogatja az Unicode szerkesztését, mint például a Jegyzettömb), adja hozzá az átküldendő eseményparamétereket. Az alább bemutatott eseményparamétereket leggyakrabban az esemény azonosításához használják. Vegye figyelembe, hogy a teljes csomópont és gyermekeit fel kell venni az EventTrigger fiókba.
Esemény / rendszer / csatorna
Esemény / Rendszer / EventRecordID
Esemény / rendszer / szint
Így:
A parancssorból futtassa a következő parancsokat az ütemező feladat törléséhez és az éppen módosított fájl használatával történő újbóli létrehozásához (nem tudom, hogyan kell a feladatokat módosítani a módosított XML fájl használatával).
C: \> schtasks / delete / TN "Eseménynapló-feladatok \ Application_SomeApplication_1000"
C: \> schtasks / create / TN "Eseménynapló-feladatok \ Application_SomeApplication_1000" / XML alkalmazás_
SomeApplication_1000.xml
lépés 4: teremtés PowerShell forgatókönyv TriggerScript.ps1, ami hívják kijelölés ütemező
megjegyzés. A megjelenített szkript alapvető információkat kap a futtatást indító feladatról. Ezután a szkript lekérdezi a Windows eseménynaplóját az esemény további részleteiről. Példánkban a paramétereket XML-n keresztül továbbítják, de bármilyen más szöveget is továbbíthatnak, feltéve, hogy a szkript helyesen elemzi és elfogadja azt.. Mellesleg, az „eventRecordID” paramétert, amelyet átadnak a szkriptnek, nem szabad összekeverni az esemény eventID-jével. Az eventRecordID értéke az összes eseményhez rendelt sorszám, amikor a csatornájukban regisztrálva vannak (Log'e). Ezen túlmenően az eventRecordIDs egyedi egy adott csatornán (Napló).
# Szkript neve: TriggerScript.ps1
# Példa felhasználásra (használjon érvényes azonosítót, amelyet egy esemény Event Viewer XML nézetéből talált meg): powershell. \ TriggerScript.ps1 -eventRecordID 1 -eventChannel alkalmazás
#
# Hozzon létre egy hamis eseményt vagy tesztelést a következő paranccsal (egy emelt parancssorból):
# eventcreate / T INFORMÁCIÓK / SO SomeApplication / ID 1000 / L ALKALMAZÁS / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
# Összegyűjti az összes megnevezett paramétert (az összes többi $ Args lesz)
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
$ poppObject.popup ("RecordID:" + $ eventRecordID + ", Csatorna:" + $ eventChannel + ", Esemény időbélyeg:" + $ eventTimestamp + ", Fájl:" + $ eventFile)
5. lépés: Ellenőrizze a beállításokat az 1. lépésben létrehozotthoz hasonló új esemény generálásával
C: \> eventcreate / T INFORMÁCIÓK / SO SomeApplication / ID 1000 / L ALKALMAZÁS / D "2011-08-29T21: 24: 03ZC: \ temp \ Some Test File.txtSuccess"
A következő felbukkanó üzenetet kell látnia:
Nem működött? Ellenőrizze a következőket:
- Keressen eseményt az Eseménynaplóban. Lehet, hogy frissítenie kell a nézetet a Frissítés menüben vagy az F5 gombbal.
- A szkript kézi futtatása valós paraméterekkel, és vizsgálja meg a lehetséges hibákat (figyeljen a szkript megjegyzéseire, az alkalmazási példákkal). Miközben a szkript „aláíratlan”, előfordulhat, hogy konfigurálnia kell a PowerShell-et, hogy aláírás nélkül futtassa (lásd: PS> get-help about_Execution_Picicies).
- Ellenőrizze, hogy a feladat megtalálható-e a Feladatütemezőben az „Event Viewer Tasks” mappában, és nézze meg a feladat előzményeit („Előzmények”).