Az eseménynaplóval kapcsolatos leggyakoribb műveletek a bejegyzések közti keresés és az adatok megjelenítése, de a PowerShell további cmdleteket is tartalmaz ezzel kapcsolatban.
Az egyik ilyen cmdlet a Show-EventLog . Ez a parancs nem csinál sok mindent, egyszerűen megnyitja a grafikus EventViewer alkalmazást, egyetlen paramétere a számítógép-név, azaz hogy mely számítógép eseménynaplóját kívánjuk megnyitni.
A következő cmdlet a Limit-EventLog . Ezzel az egyes eseménynaplók maximális méretét állíthatjuk be, illetve azt, hogy a betelés esetén mi történjen: felülírja a régebbi bejegyzéseket, csak bizonyos korú bejegyzéseket írjon felül, stb.
Van még a New-EventLog , mellyel új eseménynaplót tudunk létrehozni. Ezzel a paranccsal klasszikus formátumú új eseménynapló hozható létre, mely a többi EventLog főnevet tartalmazó cmdlettel kezelhető. Ahhoz, hogy ilyen új eseménynaplót hozhassunk létre a naplóbejegyzések statikus szövegeit és tulajdonságneveit tartalmazó erőforrás dll-t is meg kell adnunk, valamint azt, hogy mi lesz az ide beírni kívánt bejegyzések forrása.
Az előző cmdlet párja a Remove-EventLog , mellyel eseménynaplót vagy forrást lehet megszűntetni.
Ennél szelídebb és talán gyakrabban használatos a Clear-EventLog , mellyel a klasszikus eseménynaplókat lehet üríteni, akár távoli gépen is.
Ami még praktikusabb, az a Write-EventLog . Segítségével bejegyzéseket írhatunk az eseménynaplókba. Nézzünk erre példát is:
[59] PS C:\> Write-EventLog -LogName application -EntryType information -Source
PowerShellScript -Category 1 -EventId 10000 -Message "A szkriptem elindult" -R
awData 1,2
Write-EventLog : The source name
"PowerShellScript" does not exist on computer
"localhost".
At line:1 char:15
+ Write-EventLog <<<< -LogName application -EntryType information
-Source Pow
erShellScript -Category 1 -EventId 10000 -Message
"A szkriptem elindult" -RawD
ata 1,2
+
CategoryInfo : InvalidOperation:
(:) [Write-EventLog], Invalid
OperationException
+
FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteEventLogComm
and
Hoppá! Ez hibát adott. A hiba oka, hogy az Application naplóhoz még nem lett létrehozva lehetséges forrásként az általam megadott „PowerShellScript”. Pótoljuk ezt a hiányosságot, sajnos nem PowerShell cmdlettel, hanem .NET osztály statikus metódusával:
[61] PS C:\> [System.Diagnostics.EventLog]::CreateEventSource("PowerShellScript
","Application")
Akkor most újra próbálom a bejegyzésemet beírni az eseménynaplóba:
[62] PS C:\> Write-EventLog -LogName application -EntryType information -Source
PowerShellScript -Category 1 -EventId 10000 -Message "A szkriptem elindult" -R
awData 1,2
[63] PS C:\> Get-EventLog -LogName Application -Newest 1 | fl *
EventID : 10000
MachineName : dc.r2.dom
Data : {1, 2}
Index : 989
Category : (1)
CategoryNumber : 1
EntryType : Information
Message : A szkriptem elindult
Source : PowerShellScript
ReplacementStrings : {A szkriptem elindult}
InstanceId : 10000
TimeGenerated : 2010. 01. 23. 22:45:23
TimeWritten : 2010. 01. 23. 22:45:23
UserName :
Site :
Container :
Na így már sikerült!
Megjegyzés
Azt, hogy egy naplóhoz milyen források vannak már bejegyezve egy registry kulcs segítségével nézhetjük meg:
[66] PS C:\> dir HKLM:\SYSTEM\CurrentControlSet\Services\Eventlog\Application\
Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Applic
ation
SKC VC Name Property
--- -- ---- --------
0 2 .NET Runtime {TypesSupported, EventMessageFile}
0 2 .NET Runtime Optimization S... {TypesSupported, EventMessageFile}
0 2 Application {CategoryCount, CategoryMessageFile}
0 4 Application Error {EventMessageFile, TypesSupported, C...
…
0 1 PerfProc {ProviderGuid}
0 1 PowerShellScript {EventMessageFile}
0 1 Process Exit Monitor {providerGuid}
…
A fenti listában látható az általam bejegyzett PowerShellScript forrás.
Az általunk beírt eseménynapló bejegyzésekkel például két külön ablakban futó PowerShell szkript egymás közti kommunikációját is megoldhatjuk, vagy a Task Scheduler segítségével a mi általunk definiált eseménynapló-bejegyzés megjelenésére tudunk indíttatni egy parancssort, többek között PowerShell szkriptet.