18-07-2012, 10:33
|
|
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
|
|
חבר מתאריך: 07.10.04
הודעות: 13,777
|
|
ונמשיך - חיפוש ב event log
סקריפט מקוצר כי הוא נועד למטרה מאוד ספציפית, אולי כשארחיב אותו אפרסם כאן.
עלה לי חשש שמישהו איפס לי את סיסמת המשתמש והסתקרנתי לדעת מי זה.
איפוס סיסמה מעלה event מספר 627 בשרת הDC שביצוע את השינוי (שינוי סיסמה - 628)
אז כתבתי את הסקריפט הבא אשר מקבל שם מחשב, מספר, ימים ושם לוג ומוציא את הevents המתאימים:
קוד:
function event-seek
{
Param([string]$srv,[int]$EID,[int]$days=1,[string]$log="EverySingleLogAvailable")
$avail = port-ping -srv $srv -port 135 -timeout 100
if ($avail -eq $false) {write-output "$srv not available"; return $false}
if ($log -match "EverySingleLogAvailable")
{
$list = $(Get-EventLog -list -computername $srv) | % {write-output $_.Log}
}
else
{
$list = $log
}
$days = -$days
$eventdate = (get-date).AddDays($days)
$list | % {Get-EventLog -computername $srv -log $_ -after $eventdate | where {$_.EventID -eq $EID} | fl *}
}
איך? שאלה טובה
קודם כל: מכיוון שקריאה של event log מרחוק משתמש בWMI (שדורש RPC - הדרך של חלונות להתחבר ממחשב אחד לשני) צריך לוודא כי פורט 135 פתוח, אם לא - אין סיבה להמשיך
קוד:
$avail = port-ping -srv $srv -port 135 -timeout 100
if ($avail -eq $false) {write-output "$srv not available"; return $false}
אח"כ נקבל לתוך המשתנה list את הרשימה של כל הלוגים מהמחשב אותם אנו רוצים לקרוא (כברירת מחדל - כולם, אחרת רק מה שקיבלנו בפרמטר)
קוד:
if ($log -match "EverySingleLogAvailable")
{
$list = $(Get-EventLog -list -computername $srv) | % {write-output $_.Log}
}
else
{
$list = $log
}
נכין משתנה תאריך שנכון למספר הימים אחורה המבוקשים:
קוד:
$days = -$days
$eventdate = (get-date).AddDays($days)
ולסיום: בעבור כל אחד(%) מהלוגים (list$) נפעיל את get-eventlog ללוגים שנוצרו אחרי התאריך המבוקש (eventdate$)
נציג רק events שהID שלהם מתאים לערך שביקשנו (where) ונציג את הevent במלואו (* fl)
קוד:
$list | % {Get-EventLog -computername $srv -log $_ -after $eventdate | where {$_.EventID -eq $EID} | fl *}
אני מקווה שהשורה האחרונה הייתה מוסברת היטב, כפי שאמרתי - שימוש מאוד ספציפי, בכול יום אחר הייתי כותב את זה קצת יותר מובן
דוגמה להרצה:
קוד:
> event-seek kobebe-pc 1704 1 application
EventID : 1704
MachineName : Kobbebe-PC.coolest.domain
Data : {}
Index : 16195
Category : (0)
CategoryNumber : 0
EntryType : Information
Message : Security policy in the Group policy objects has been appli
ed successfully.
Source : SceCli
ReplacementStrings : {}
InstanceId : 1073743528
TimeGenerated : 7/18/2012 8:33:32 AM
TimeWritten : 7/18/2012 8:33:32 AM
UserName :
Site :
Container :
_____________________________________
|