2016-08-04 9 views
1

Ich habe ein funktionierendes Skript, das einen Bericht über Windows-Anwendungs-, Sicherheits-, Setup- und Systemprotokolle erstellen kann, der nur die kritischen und Fehlerereignisse der letzten 30 Tage anzeigt. Allerdings würde es mir auch gefallen, wenn das Skript zählt, wie oft jedes kritische Ereignis in den letzten 30 Tagen aufgetreten ist. Hier ist der Arbeits Befehl:Erhalten Sie eindeutige Ereignisse aus dem Ereignisprotokoll und ihre Anzahl

Get-EventLog Application -ComputerName $server -After $starttime | 
    ? { $_.entryType -Match "Error" -and "Critical" } | 
    Sort-Object EventID -Unique | 
    Select-Object TimeGenerated,EventID,Source,Message | 
    ft -AutoSize -Wrap | 
    Out-File $file -Append 

Und hier ist ein Beispiel für die Ausgabe in der Textdatei:

TimeGenerated  EventID Source          Message           
-------------  ------- ------          -------           
7/8/2016 1:23:20 PM  0 SQL Server Report Service     Service cannot be started. Microsoft.ReportingS 
                    ervices.Diagnostics.Utilities.InternalCatalogEx 
                    ception: An internal error occurred on the repo 
                    rt server. See the error log for more details. 
                     at Microsoft.ReportingServices.Library.Nativ 
                    e.GetSid(String name, Int32& length)   
                     at Microsoft.ReportingServices.Library.Nativ 
                    e.NameToSid(String name)      
                     at Microsoft.ReportingServices.Library.Servi 
                    ceAppDomainController.StartRPCServer(Boolean fi 
                    rstTime)          
                     at Microsoft.ReportingServices.Library.Servi 
                    ceAppDomainController.Start(Boolean firstTime) 
                     at Microsoft.ReportingServices.NTService.Rep 
                    ortService.OnStart(String[] args)    
                     at System.ServiceProcess.ServiceBase.Service 
                    QueuedMainCallback(Object state)    
7/8/2016 1:23:20 PM  121 Report Server Windows Service (MSSQLSERVER) The Remote Procedure Call (RPC) service failed 
                    to start.          

Es wäre toll, eine andere Spalte in den Ergebnissen zu haben, das die Vorkommen jedes Ereignis-ID zeigt im angegebenen Zeitraum.

Antwort

1

Sie könnten es tun, wie so (Linie 3 & 4 sind neu und Count in Select-Object)
Technisch Sie auch die -Unique von Sort-Object wie nach dem Gruppieren sie entfernen konnte und durch nur das erste Element der Gruppe mehr oder weniger gleich.

Get-EventLog Application -ComputerName $server -After $starttime | 
    ? { $_.entryType -Match "Error" -and "Critical" } | 
    Group-Object -Property EventID | 
    % { $_.Group[0] | Add-Member -PassThru -NotePropertyName Count -NotePropertyValue $_.Count } | 
    Sort-Object EventID -Unique | 
    Select-Object Count, TimeGenerated, EventID, Source, Message | 
    ft -AutoSize -Wrap | 
    Out-File $file -Append 
+0

Danke, ich werde es später heute Abend versuchen. –

+0

Hat es für Sie funktioniert? – DAXaholic

+0

Ja. Ich musste den Add-Member-Befehl zu 'Add-Member -PassThru -MemberType NoteProperty -Name Count -Value $ _. Count}' ändern, aber ansonsten funktioniert es wunderbar. Vielen Dank! –

Verwandte Themen