Links zu den Foren
   
PowerShell Anwendergruppe Forum
 
  Forum   PowerShell trif...  Vista  Variable Abfrage von Eventlogs
Previous Previous
 
Next Disabled
New Post 4/7/2010 8:01 AM
  Fred
1 posts
No Ranking


Variable Abfrage von Eventlogs   (Germany)

Hallo Zusammen,

ich möchte gern mit Powershell 1.0 das System Eventlog "variabel" durchsuchen.

Dafür bastel ich mir eine Variable zusammen.
Beispiel:

$query = '($_.Eventid -eq 6005)'

Frage ich nun damit das Eventlog ab, bekomme ich nicht die gewünschten Ergebnisse:

get-eventlog -logname system | where-object { $query } |select EventID, Source, Message

                                EventID Source                                  Message
                                ------- ------                                  -------
                                   7036 Service Control Manager                 The description for Event ID '107374...
                                   7036 Service Control Manager                 The description for Event ID '107374...
                                   7036 Service Control Manager                 The description for Event ID '107374...
                                   7036 Service Control Manager                 The description for Event ID '107374...
                                  10016 DCOM                                    The description for Event ID '-10737...

 

Wo ist der Fehler mit der "query" in der Abfrage? Die "query" soll weiterhin so flexibel zusammengestellt werden können.

Bin für jeden guten Tipp dankbar.
Fred

 
New Post 4/7/2010 9:09 AM
  Helmut
168 posts
1st Level Poster


Re: Variable Abfrage von Eventlogs   (Germany)

Hallo Fred,

es gibt da ein CmdLet das dir wohl helfen kann. Es heißt Invoke-Expression.

Du musst nur innerhalb von Where-Object { } das CmdLet vor der Variable $query einsetzen und das CmdLet wertet den Text als PowerShell Befehl aus. Die Klammern um Invoke-Expression sind nicht zwingend nötig, sehen aber hübsch aus finde ich .

$query = '($_.Eventid -eq 6005)'
get-eventlog -logname system | where-object { (Invoke-Expression $query) } |select EventID, Source, Message -First 10

Viele Grüße

Helmut

 
New Post 4/7/2010 9:42 AM
  Rolf
198 posts
www.powershell-ag.de
1st Level Poster


Re: Variable Abfrage von Eventlogs   (Germany)

Hallo zusammen,

was haltet ihr von dem Vorschlag:


$IDNumber = 6005
get-eventlog -logname system |
where-object { ($_.Eventid -eq $QueryNumber) } |
select EventID, Source, Message -First 10

Gruß
Rolf

 
New Post 4/22/2010 12:19 PM
  Bernd
44 posts
4th Level Poster


Re: Variable Abfrage von Eventlogs   (Germany)
Hi Fred,
ich hatte mir da mal vor einiger Zeit was gebastelt. Vielleicht Hilft's dir ja.
VG
Bernd

function get-el ($Computername= ($env:computername),$SeitDatum=((Get-Date).AddHours(-24)).DateTime,[string]$logfile="system",$Typ="error",$EventID="*")
{
$ErlaubtLogfile = "System","Security","Application"
$ErlaubtTyp = "Error","Warning","Information"
if ($ErlaubtLogfile -notcontains $logfile){Write-host -ForegroundColor red "Falscher Wert für `"Logfile`"`nBitte einen der folgenden Werte angeben: $ErlaubtLogfile";return}
if ($ErlaubtTyp -notcontains $typ){Write-host -ForegroundColor red "Falscher Wert für `"Typ`"`nBitte einen der folgenden Werte angeben: $ErlaubtTyp";return}
$date = [datetime]::Parse($SeitDatum)
""
"Suchparameter:"
"=============="
"Logfile`t`t: $logfile"
"Typ`t`t: $Typ"
"Datum`t`t: $SeitDatum (Vorgabewert: Letzte 24 Std)"
"Computername`t: $Computername"
""
([System.Diagnostics.EventLog]::GetEventlogs($Computername) | ?{$_.Log -eq $logfile}).get_Entries() |
?{($_.EntryType -eq $typ) -and ($_.TimeWritten -ge $date)} |
?{($_.EventID -like $EventID)} |
ft TimeWritten, Source, EventID, Message -AutoSize -Wrap
}
 
Previous Previous
 
Next Disabled
  Forum   PowerShell trif...  Vista  Variable Abfrage von Eventlogs