Hallo Community,
ich habe ein PowerShell Skript geschrieben, welches die Ereignislogs ab einen gewählten Datum von einem Gerät ausliest, sortiert und doppelte Einträge nach EventID filtert.
Das Skript habe ich in der ISE unter Windows 8, also PowerShell 3 geschrieben.
Da das Skript unter Windows 7 und Windows Server 2008 R2 mit PowerShell 2 nicht lief, habe ich das Skript in der ISE unter Windows 7 angepasst - auch dort läuft es ohne Probleme.
Allerdings funktioniert dieses Skript nicht auf Server 2008 R2 oder anderen Windows 7 Clients mit PSv2.
Vielleicht habt Ihr noch eine Idee welcher Befehl, der vielleicht aus PSv3 stammt, hier noch querschlägt, weil falsche Syntax oder nicht verfügbar.
Hier das Skript:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") cls $benutzer = [Environment]::UserName $zeit = Read-Host "Ab welchen Datum soll das Ereignislog ausgelesen werden? (Angabe in MM/TT/JJJJ)" #$zielrechner = Read-Host "Von welchem Windows-Gerät soll das Ereignislog ausgelesen werden? (Bsp.: T4M-APC-100)" #if($zielrechner -eq "") #{ #$zielrechner = "localhost" #} try { Get-EventLog -LogName System <#-ComputerName $zielrechner#> -after ($zeit) -EntryType Error | Sort-Object EventID | Get-Unique -OnType | Format-Table -Property EventID,Source,Message -AutoSize -Wrap | Out-File -Encoding ascii C:\Users\$benutzer\Desktop\SystemLog.txt } catch { $MessageSystem= [System.Windows.Forms.MessageBox]::Show("Es wurden keine Einträge für System-Ereignislogs gefunden.","Hinweis") if($MessageSystem -eq "OK") { Write-Host "System: Keine Einträge" } } try { Get-EventLog -LogName Security <#-ComputerName $zielrechner#> -after ($zeit) -EntryType Error | Sort-Object EventID | Get-Unique -OnType | Format-Table -Property EventID,Source,Message -AutoSize -Wrap | Out-File -Encoding ascii C:\Users\$benutzer\Desktop\SecurityLog.txt } catch { $MessageSecurity= [System.Windows.Forms.MessageBox]::Show("Es wurden keine Einträge für Sicherheits-Ereignislogs gefunden.","Hinweis") if($MessageSecurity -eq "OK") { Write-Host "Sicherheit: Keine Einträge" } } try { get-eventlog -logname Application <#-ComputerName $zielrechner#> -after ($zeit) -EntryType Error | Sort-Object EventID | Get-Unique -OnType | Format-Table -Property EventID,Source,Message -AutoSize -Wrap | Out-File -Encoding ascii C:\Users\$benutzer\Desktop\ApplicationLog.txt } catch { $MessageApplication= [System.Windows.Forms.MessageBox]::Show("Es wurden keine Einträge für Anwendungs-Ereignislogs gefunden.","Hinweis") if($MessageApplication -eq "OK") { Write-Host "Anwendung: Keine Einträge" } } Write-Host "Skript abgeschlossen. PowerShell wird in 10 Sekunden beendet." Start-Sleep -s 10
Vielen Dank für Antworten.
Mit freundlichen Grüßen
Sandro