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, 13478 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell Ordnername auslesen und verwenden (3)

Frage von zamsi7 zum Thema Batch & Shell ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Windows Netzwerk
gelöst Powershell skript zum Auslesen der im AD angemeldeten User (2)

Frage von jan.kleinel zum Thema Windows Netzwerk ...

Neue Wissensbeiträge
Google Android

Cyanogenmod alternative Downloadquelle

(2)

Tipp von Lochkartenstanzer zum Thema Google Android ...

Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(5)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Heiß diskutierte Inhalte
Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

LAN, WAN, Wireless
gelöst Statische Routen mit ISC-DHCP Server für Android Devices (22)

Frage von terminator zum Thema LAN, WAN, Wireless ...

Server
gelöst Wie erkennen, dass nur deutsche IPs Zugang zu einer Website haben? (22)

Frage von Coreknabe zum Thema Server ...

Exchange Server
gelöst Migration Exchange 2007 zu 2013 - Public Folder teilweise weg (16)

Frage von Andy1987 zum Thema Exchange Server ...