2009-05-15 9 views
1

Ich erstelle ein Skript, um das Sicherheitsprotokoll von mehreren Computern zu lesen. Ich kann das Sicherheitsprotokoll von meinem lokalen Computer ohne Probleme lesen, wenn ich den Get-EventLog-Befehl verwende, aber das Problem dabei ist, dass ich es nicht gegen einen Remote-Computer ausführen kann (das Skript ist für Powershell v1). Der folgende Befehl gibt keine Ergebnisse zurück, obwohl das mit jedem anderen LogFile einwandfrei funktioniert:Verwenden von PowerShell und WMI zum Lesen des Sicherheitsprotokolls

gwmi-Klasse Win32_NTLogEvent | where {$ _. LogFile -eq „Sicherheit“}

Ich habe einige der Forschung getan, und ich scheint ein Identitätswechsel Problem zu sein, aber die -Impersonation Option für die Get-WmiObject scheint nicht umgesetzt werden . Gibt es dieses Problem überhaupt? Die Lösung könnte das Get-EventLog auf einem Remote-Computer ausführen oder sich mit dem Identitätswechselproblem befassen, sodass auf das Sicherheitsprotokoll zugegriffen werden kann. Danke

Antwort

3

Sie könnten .NET direkt anstelle von WMI verwenden. Der folgende Skriptblock gibt Ihnen den ersten Eintrag im Sicherheitsprotokoll

$logs = [System.Diagnostics.EventLog]::GetEventLogs('computername') 
$security = $logs | ? {$_.log -like 'Security'} 
$security.entries[0] 
+0

Funktioniert wie ein Charme! Danke – Pascal

1

Haben Sie versucht, den Parameter -Credential zu verwenden? Verwenden Sie den Filterparameter anstelle von where-object, es werden nur die Sicherheitsereignisse abgerufen (where-object ruft ALLE Ereignisse von allen Protokollen ab und führt erst dann die Filterung durch)

gwmi Win32_NTLogEvent -filter "LogFile = 'Sicherheit'" -computer comp1, comp2 -credential domain \ benutzer

+0

Danke für die Filterspitze. Du hast vollkommen recht. Soweit die Verwendung der Anmeldeinformationen erfolgt, bin ich lokaler Administrator und selbst das Abrufen des lokalen Sicherheitsereignisprotokolls funktioniert nicht. – Pascal

+0

für V2 gibt es einen -EnableAllPrivileges Schalter: gwmi Win32_NTLogEvent -Filter "LogFile = 'Sicherheit'" -EnableAllPrivileges –

Verwandte Themen