Hagyományos eseménynaplók kezelése (Get-EventLog)

A „hagyományos” Eseménynapló bejegyzéseinek kiolvasására a Get-Eventlog  cmdletet használhatjuk, ami EventLogEntry (vagy EventLog) típusú objektumokat ad vissza. Először is tudjuk meg, hogy milyen naplók vannak a gépünkön:

[28] PS C:\> Get-EventLog -List

 

  Max(K) Retain OverflowAction        Entries Log

  ------ ------ --------------        ------- ---

     512      7 OverwriteOlder             36 Active Directory Web Services

  20 480      0 OverwriteAsNeeded         929 Application

  15 168      0 OverwriteAsNeeded          29 DFS Replication

     512      0 OverwriteAsNeeded         102 Directory Service

  16 384      0 OverwriteAsNeeded          23 DNS Server

     512      0 OverwriteAsNeeded          18 File Replication Service

  20 480      0 OverwriteAsNeeded           0 HardwareEvents

     512      7 OverwriteOlder              0 Internet Explorer

  20 480      0 OverwriteAsNeeded           0 Key Management Service

 131 072      0 OverwriteAsNeeded      65 291 Security

  20 480      0 OverwriteAsNeeded       2 102 System

  15 360      0 OverwriteAsNeeded       2 902 Windows PowerShell

A fenti parancs EventLog objektumokat ad vissza, ezektől lekérdezhetők az adott napló különféle tulajdonságai, maximális mérete, bejegyzéseinek száma, stb.

[29] PS C:\> (get-eventlog -list)[0] | Format-List *

 

 

Entries              : {dc.r2.dom, dc.r2.dom, dc.r2.dom, dc.r2.dom...}

LogDisplayName       : Active Directory Web Services

Log                  : Active Directory Web Services

MachineName          : .

MaximumKilobytes     : 512

OverflowAction       : OverwriteOlder

MinimumRetentionDays : 7

EnableRaisingEvents  : False

SynchronizingObject  :

Source               :

Site                 :

Container            :

[30] PS C:\> (get-eventlog -list)[0].Entries.Count

36

Ha egy konkrét napló bejegyzéseire vagyunk kíváncsiak, akkor a napló nevét kell megadnunk paraméterként, a -newest paraméter után álló szám pedig a listába kerülő bejegyzések számát korlátozza. Az következő parancs a rendszernapló legutóbbi három bejegyzését fogja kiolvasni:

[31] PS C:\> Get-EventLog -LogName System -Newest 3

 

   Index Time          EntryType   Source                 InstanceID Message

   ----- ----          ---------   ------                 ---------- -------

    2102 jan. 16 00:42 Warning     Microsoft-Windows...         1014 Name r...

    2101 jan. 16 00:41 Information Service Control M...   1073748860 The Wi...

    2100 jan. 16 00:41 Information Microsoft-Windows...            1 The de...

Az előző két parancs kombinálásával valamennyi napló legfrissebb bejegyzéseit is könnyen lekérdezhetjük egyetlen paranccsal. A bal oldali Get-Eventlog szállítja a naplók objektumait, az innen származó adatokat fogjuk odaadni paraméterként a Foreach-Object belsejében elinduló Get-Eventlog-nak, így szép sorban valamennyi napló bejegyzései elő fognak kerülni. (Közben még kiírjuk a napló nevét is, hogy tudjuk, hol járunk.)

[41] PS C:\> Get-Eventlog -list | Foreach-Object {Write-Host $_.LogDisplayName;

 if($_.entries.count){Get-EventLog -LogName $_.LogDisplayName -Newest 3}}

Active Directory Web Services

 

   Index Time          EntryType   Source                 InstanceID Message

   ----- ----          ---------   ------                 ---------- -------

      36 dec. 31 15:14 Information ADWS                   1073742828 Active...

      35 dec. 31 15:14 Information ADWS                   1073742830 Active...

      34 dec. 31 15:14 Information ADWS                   1073743024 Active...

Application

     929 jan. 16 00:42 Information SceCli                 1073743528 Securi...

     928 jan. 14 21:23 Information SceCli                 1073743528 Securi...

     927 jan. 13 21:07 Information HHCTRL                       1904 The de...

DFS Replication

      29 dec. 31 15:15 Information DFSR                   1073743030 The DF...

      28 dec. 31 15:14 Information DFSR                   1073747926 The DF...

      27 dec. 31 15:14 Information DFSR                   1073743138 The DF...

Directory Service

     102 jan. 11 21:29 Information NTDS ISAM                     701 NTDS (...

     101 jan. 11 21:29 Information NTDS ISAM                     700 NTDS (...

     100 jan. 07 21:40 Information NTDS ISAM                     701 NTDS (...

DNS Server

      23 jan. 06 06:55 Error       DNS                    3221229488 The DN...

      22 dec. 31 15:14 Information DNS                    1073741826 The DN...

      21 dec. 31 15:14 Information DNS                    1073741828 The DN...

File Replication Service

      18 dec. 31 15:14 Information NtFrs                  1073755340 The Fi...

      17 dec. 31 15:14 Warning     NtFrs                  2147497160 The Fi...

      16 dec. 31 15:14 Information NtFrs                  1073755325 The Fi...

Hardware Events

Internet Explorer

Key Management Service

Security

   65364 jan. 16 00:59 SuccessA... Microsoft-Windows...         4634 An acc...

   65363 jan. 16 00:59 SuccessA... Microsoft-Windows...         4624 An acc...

   65362 jan. 16 00:59 SuccessA... Microsoft-Windows...         4672 Specia...

System

    2102 jan. 16 00:42 Warning     Microsoft-Windows...         1014 Name r...

    2101 jan. 16 00:41 Information Service Control M...   1073748860 The Wi...

    2100 jan. 16 00:41 Information Microsoft-Windows...            1 The de...

Windows PowerShell

    2902 jan. 12 22:31 Information PowerShell                    400 Engine...

    2901 jan. 12 22:31 Information PowerShell                    600 Provid...

    2900 jan. 12 22:31 Information PowerShell                    600 Provid...

A belső IF vizsgálatra azért volt szükség, mert a naplóbejegyzések lekérése hibát adna abban az esetben, ha egy eseménynaplóban nincsen egy bejegyzés sem.

Természetesen a megszokott eszközök segítségével tetszés szerint szűrhetjük és formázhatjuk is a naplókból nyert objektumokat. Kiválogathatjuk például csak a hibákat vagy a figyelmeztetéseket, és válogathatunk a kiírandó jellemzők között. Például listázzuk ki a rendszernaplóból az utolsó héten keletkezett „Warning” típusú utolsó három bejegyzést időrend szerint:

[45] PS C:\> Get-EventLog -LogName System -EntryType warning -Newest 3 -After (

get-date).adddays(-7)

 

   Index Time          EntryType   Source                 InstanceID Message

   ----- ----          ---------   ------                 ---------- -------

    2102 jan. 16 00:42 Warning     Microsoft-Windows...         1014 Name r...

    2098 jan. 14 22:53 Warning     NETLOGON                     5782 Dynami...

    2096 jan. 14 21:23 Warning     Microsoft-Windows...           16 Unable...

Nézzünk meg egy konkrét naplóbejegyzést részletesebben:

[24] PS C:\> (Get-EventLog -LogName application -InstanceID 1040)[0] | Format-L

ist *

 

 

EventID            : 1040

MachineName        : dc.r2.dom

Data               : {}

Index              : 816

Category           : (0)

CategoryNumber     : 0

EntryType          : Information

Message            : Beginning a Windows Installer transaction: \\192.168.1.20

                     0\c$\_munka\powershell2\tools\PowerGUI.1.9.5.966.msi. Cli

                     ent Process Id: 2568.

Source             : MsiInstaller

ReplacementStrings : {\\192.168.1.200\c$\_munka\powershell2\tools\PowerGUI.1.9

                     .5.966.msi, 2568, (NULL), (NULL)...}

InstanceId         : 1040

TimeGenerated      : 2009. 12. 31. 15:19:40

TimeWritten        : 2009. 12. 31. 15:19:40

UserName           : R2\Administrator

Site               :

Container          :

Látható, hogy az üzenet (Message) rész kétfajta részből áll össze: egy statikus, pusztán az EventID-tól függő szövegrészből, és az ebbe illeszkedő adott géptől, időtől és egyéb körülménytől függő behelyettesítő adatokból. Ez utóbbiak külön is megtalálhatók a ReplacementStrings tulajdonság-tömbben. Vajon ezt hogyan tudjuk praktikusan felhasználni? Például nézzük, hogy hogyan lehet a Security log információi alapján egy olyan táblázatot készíteni, hogy ki mikor lépett be a tartományba. Ehhez talán a következő naplóbejegyzés megkeresése a legpraktikusabb:

[51] PS C:\> Get-EventLog -LogName Security -InstanceId 4768 | fl *

 

 

EventID            : 4768

MachineName        : dc.r2.dom

Data               : {}

Index              : 66017

Category           : (14339)

CategoryNumber     : 14339

EntryType          : SuccessAudit

Message            : A Kerberos authentication ticket (TGT) was requested.

 

                     Account Information:

                         Account Name:        SoosTibor

                         Supplied Realm Name:    R2

                         User ID:            S-1-5-21-3398938913-3940250523-92

                     7435294-1178

 

                     Service Information:

                         Service Name:        krbtgt

                         Service ID:        S-1-5-21-3398938913-3940250523-927

                     435294-502

 

                     Network Information:

                         Client Address:        ::ffff:192.168.1.11

                         Client Port:        49257

 

                     Additional Information:

                         Ticket Options:        0x40810010

                         Result Code:        0x0

                         Ticket Encryption Type:    0x12

                         Pre-Authentication Type:    2

 

                     Certificate Information:

                         Certificate Issuer Name:

                         Certificate Serial Number:

                         Certificate Thumbprint:

 

                     Certificate information is only provided if a certificate

                      was used for pre-authentication.

 

                     Pre-authentication types, ticket options, encryption type

                     s and result codes are defined in RFC 4120.

Source             : Microsoft-Windows-Security-Auditing

ReplacementStrings : {SoosTibor, R2, S-1-5-21-3398938913-3940250523-927435294-

                     1178, krbtgt...}

InstanceId         : 4768

TimeGenerated      : 2010. 01. 16. 10:08:11

TimeWritten        : 2010. 01. 16. 10:08:11

UserName           :

Site               :

Container          :

Látható, hogy a felhasználó neve legegyszerűbben a ReplacementStrings tulajdonság-tömbből szedhető ki. Nézzük ezt meg részletesebben:

[52] PS C:\> (Get-EventLog -LogName Security -InstanceId 4768)[0].replacementst

rings | fl *

SoosTibor

R2

S-1-5-21-3398938913-3940250523-927435294-1178

krbtgt

S-1-5-21-3398938913-3940250523-927435294-502

0x40810010

0x0

0x12

2

::ffff:192.168.1.11

49257

Látható, hogy az első elem a felhasználónév és a 10. elemben meg megtalálható a felhasználó számítógépének IP címe. Készítsünk ezek alapján egy speciális táblázatot:

[62] PS C:\> Get-EventLog -LogName Security -InstanceId 4768,4771 | Select-Obje

ct -Property @{n="user";e={$_.replacementstrings[0]}}, entrytype, timegenerated

, @{n="IP";e={$_.replacementstrings[9].substring(7)}} | ft -AutoSize

 

user            EntryType TimeGenerated          IP

----            --------- -------------          --

NagyBela     FailureAudit 2010. 01. 16. 10:19:50

SoosTibor    SuccessAudit 2010. 01. 16. 10:08:11 192.168.1.11

NemecsekBela SuccessAudit 2010. 01. 16. 10:04:13 192.168.1.11

SulyokIstvan SuccessAudit 2010. 01. 16. 10:03:39 192.168.1.11

SoosTibor    SuccessAudit 2010. 01. 16. 10:03:03 192.168.1.11

Ebbe belevettem még a sikertelen bejelentkezésre utaló 4771-es bejegyzést is. Látható, hogy sokkal áttekinthetőbben jeleníttethetők meg így az adatok, mint az Event Viewer eszköz segítségével.



Word To HTML Converter