Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: kallewirsch

kallewirsch (Level 1) - Jetzt verbinden

03.09.2007, aktualisiert 18.10.2012, 13700 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):
https://www.administrator.de/wissen/powershell-for-runaways-part-ii-8661 ...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Remote Powershell ausführen wie lokale Powershell

gelöst Frage von IngenieursBatch & Shell2 Kommentare

Hallo vielleicht ist der Titel nicht ganz deutlich formuliert. Ich möchte wissen ob es eine Möglichkeit gibt Remote Powershell ...

Batch & Shell

Powershell Hashtable

gelöst Frage von MarabuntaBatch & Shell2 Kommentare

Warum steht Neuer Wert an zweiter und nicht an dritter Stelle? Ich wollte mir auch die Inhalte wie ein ...

Batch & Shell

Powershell elevated

Tipp von AnkhMorporkBatch & Shell2 Kommentare

Ein kleiner Tipp am Rande für alle PS-Novizen (ich wars einfach leid): Um eine Konsole mit elevated rights schnell ...

Batch & Shell

Datenbankabfrage Powershell

gelöst Frage von internet2107Batch & Shell3 Kommentare

Ich versuche auf eine Datenbank zuzugreifen, was auch soweit klappt. Jedoch möchte ich gerne alle Tabellen listen, die sich ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 2 TagenHumor (lol)3 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 6 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 7 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore30 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows 10
Windows Enterprise 1809 Eval nicht bootbar
Frage von Sunny89Windows 1022 Kommentare

Hallo zusammen, bevor ich mich jetzt noch stundenlang rumärger wollte ich euch fragen, ob Ihr die gleichen Probleme habt ...

JavaScript
Javascript: WebSql
gelöst Frage von internet2107JavaScript13 Kommentare

Guten Morgen zusammen, zunächst einmal einen schönen dritten Advent. Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ...