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.