Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell - Systemeventlog auslesen

Frage Entwicklung Batch & Shell

Mitglied: kallewirsch

kallewirsch (Level 1) - Jetzt verbinden

03.09.2007, aktualisiert 18.10.2012, 13400 Aufrufe, 6 Kommentare

Powrshell - Newbie
Hallo Forum, ich möchte die System-Eventlogs mit Hilfe der Powershell von einem zentralen Scriptserver aus auf verschiedenen W2K / W2K3-Servern auslesen. Allerdings nicht das komplette Eventlog, sondern nur bestimmte Einträge, aber immer für die letzten 24h Stunden.

Hier das kleine Powershellscript:


01.
 
02.
#Computer, von dem ich das Systemevent auslesen möchte... 
03.
$strComputer = "Hans" 
04.
 
05.
#Datum im Format YYYYMMDD bereitstellen und zu Testzwecken ausgeben 
06.
$datum1=(get-date (get-date).AddDays(-1) -uformat %Y%m%d) 
07.
Write-Host $datum1 
08.
 
09.
#Von-Datum im Epochendatumsformat zusammenbauen und zu Testzwecken ausgeben 
10.
$datum2=($datum1+"000000.000000") 
11.
Write-Host $datum2 
12.
 
13.
#BIS-Datum im Epochendatumsformat zusammenbauen und zu Testzwecken ausgeben 
14.
$datum3=($datum1+"235959.999999") 
15.
Write-Host $datum3 
16.
 
17.
 
18.
#Objekt anlegen 
19.
$colItems = get-wmiobject -class "Win32_NTLogEvent" -namespace "root\CIMV2" -computername $strComputer -Filter "LogFile='System' and EventCode='10' and SourceName='Print'" | where {"$_.TimeWritten -gt $datum2 -and $_.TimeWritten -lt $datum3"} 
20.
 
21.
#For-Schleife durcharbeiten und ausgeben 
22.
foreach ($objItem in $colItems) { 
23.
      write-host "Message: " $objItem.Message 
24.
      write-host "Time Written: " $objItem.TimeWritten 
25.
      write-host 
26.
}
Könnt Ihr mir helfen? Könnte das Problem vielleicht in der Epochen-Zeit liegen? Ich vermute, das es ein Problem mit der Where-Bedingung ist, da keine der beiden Datumsabfragen greift.....
Ein Auslesen über VB-Script oder Logparser kommt leider nicht in Frage, so dass ich es mit der Powershell machen muss.......

Vielen Dank
Mitglied: TuXHunt3R
03.09.2007 um 21:57 Uhr
Pack bitte den Code in Codeblöcke, so ist er fast nicht lesbar.

z.B. so:

01.
 
02.
write-host "Hier ist der Code" 
03.
 

Hilfe findest du unter "Formatierungshilfe"
Bitte warten ..
Mitglied: kallewirsch
03.09.2007 um 23:01 Uhr
Sorry, hatte ich vergessen, danke für den Hinweis.
Bitte warten ..
Mitglied: TuXHunt3R
04.09.2007 um 21:15 Uhr
Versuch die where-Bedingung mal so (Nicht getestet):

01.
 
02.
where {$_.TimeWritten -gt $datum2 and $_.TimeWritten -lt $datum3} 
03.
 

Hilfe zum Where-CMDlet gibts durch die Eingabe von
01.
get-help where-object -detailed
"where" ist ein Alias vom CMDlet "where-object"
Bitte warten ..
Mitglied: kallewirsch
12.09.2007 um 09:38 Uhr
Hi TuXHunt3R,

die Hilfe hat mich ein Stück weiter gebracht und jede Menge ausprobieren.

Als Ergebnis habe ich zwei Varianten gefunden, eine Schlechte und eine Gute, allerdings nur durch das Measure-Command.

Nun das Script:
01.
 
02.
#Skriptname: Eventlog Remote auslesen 
03.
04.
#Autor: kallewirsch 
05.
06.
#Auflage: 1.0 
07.
08.
#Verzeichnis: /Scripte 
09.
10.
#Beschreibung:  
11.
#Anmerkungen: keine 
12.
13.
14.
15.
#Variablendeklaration 
16.
17.
 
18.
$strComputer="Hans" 
19.
$lfdzae=0 
20.
$lfzeit=0 
21.
 
22.
$datum1=(get-date (get-date).AddDays(-1) -uformat %Y%m%d) 
23.
#Write-Host $datum1 
24.
$datum2=($datum1+"000000.000000+120") 
25.
#Write-Host $datum2 
26.
$datum3=($datum1+"235959.999999+120") 
27.
#Write-Host $datum3 
28.
29.
 
30.
# Schlechte Variante: 
31.
$lfzeit=(Measure-Command {$colItems=Get-WmiObject -class "Win32_NtLogEvent" -Namespace "root\cimv2" -computername $strComputer | where-object -FilterScript {$_.logfile -eq 'System' -and $_.Eventcode -eq 10 -and $_.Sourcename -eq 'Print' -and $_.TimeWritten -gt "$datum2" -and $_.Timewritten -lt "$datum3"}}).Totalseconds 
32.
33.
 
34.
# Gute Variante: 
35.
#$lfzeit=(Measure-Command {$colItems=Get-WmiObject -Namespace "root\cimv2" -computername $strComputer -Query "select * from win32_ntlogevent where logfile = 'System' and Eventcode=10 and Sourcename = 'Print' and TimeWritten >= '$datum2' and Timewritten <= '$datum3'"}).Totalseconds 
36.
foreach ($objItem in $colItems) { 
37.
   $lfdzae=$lfdzae+1 
38.
   write-host 
39.
   write-host "Message: "      $objItem.Message 
40.
   write-host "Time Generated: " $objItem.Generated 
41.
   write-host "Time Written: " $objItem.TimeWritten 
42.
   write-host 
43.
44.
 
45.
Write-Host "lfdzae :" $lfdzae 
46.
Write-Host "Ausfuehrungsdauer betraegt $lfzeit Sekunden" 
47.
 
48.
 
Der Unterschied liegt in der Abarbeitung des Befehles, in der schlechten Variante wird das wohl das gesamte Eventlog des Remote-Rechners auf den lokalen Rechner gezogen und dann entsprechend des Pipe-Befehls das Filter-Script angewendet.
Im anderen Fall wird die SQL-ähnliche Abfrage benutzt, diese filtert auf dem Remote-Server sofort das Eventlog und gibt nur entsprechend der where-Klausel das Ergebnis zurück.

Im Zusammenhang mit dem Measure-Command wird das ganze deutlich.

Sollte ich in der Beschreibung der Befehle einen Fehler haben, bitte um Korrektur.

Danke und viel Spaß beim ausprobieren.
Bitte warten ..
Mitglied: TuXHunt3R
12.09.2007 um 12:14 Uhr
Sehr gutes Script.

Werds gleich mal testen
Bitte warten ..
Mitglied: TuXHunt3R
28.04.2008, aktualisiert 18.10.2012
Hier noch was zum Thema Eventlog+PowerShell (unter Anderem):
http://www.administrator.de/wissen/powershell-for-runaways-part-ii-8661 ...
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Ordnername auslesen und verwenden (3)

Frage von zamsi7 zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell INI Tags auslesen (2)

Frage von H41mSh1C0R zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...